leetcode 資料結構 探索雜湊表

2022-07-24 18:57:08 字數 2175 閱讀 9187

1、雜湊表:雜湊表是一種使用雜湊函式組織資料,以支援快速插入和搜尋的資料結構。通過選擇合適的雜湊函式,雜湊表可以在插入和搜尋方面實現出色的效能。

雜湊表的關鍵思想是使用雜湊函式將鍵對映到儲存桶。

(1)雜湊集合:集合資料結構的實現之一,用於儲存非重複值。

(2)雜湊對映:對映資料結構的實現之一,用於儲存(key, value)鍵值對。

雜湊函式: y = x%5  (x是鍵值,y是桶的索引)  

插入:通過雜湊函式解析鍵,將它們對映到相應的桶中。

搜尋:通過相同的雜湊函式解析鍵,並僅在特定儲存桶中搜尋。

2、雜湊集合的操作:add(value):向雜湊集合中插入乙個值;

remove(value):將給定值從雜湊集合中刪除。

3、雜湊對映的操作:get(key):返回給定的鍵所對應的值,如果對映中不包含這個鍵,  返回none。

remove(key):如果對映中存在這個鍵,刪除這個數值對。

練習題:(1)快樂數:

def

hashset =set()

while

true:

n = sum([int(i)**2 for i in

str(n)])

if n==1:

return

true

elif n in

hashset:

return

false

else

: hashset.add(n)

n = 19

(2)詞頻計數

from collections import

counter

deff(s):

c =counter( )

for char in

s: c[char] +=1

return

dict(c)

s = "

aabbc

"print(f(s)

def

f(s):

dic ={}

for char in

s:

if dic.get(char)==none:

dic[char]=1

else

: dic[char] +=1

return

dics = "

aabbc

"print(f(s))

(3)字串無重複最長子串。

def

f(s):

dic ={}

left = -1temp =0

for right in

range(len(s)):

if s[right] in

dic:

left =max(dic[s[right]],left)

temp = max(temp, right-left)

dic[s[right]] =right

return

temp

s = "

abcabcbb

"print(f(s))

def

f(s):

hashset =set()

n =len(s)

#初始化右指標

right = -1res =0

for left in

range(n):

if left !=0:

#左指標移動一格,移除乙個字元

hashset.remove(s[left-1])

while right+1and s[right+1] not

inhashset:

hashset.add(s[right+1])

right +=1res = max(res, right-left+1)

return

ress = "

abcabcbb

"print(f(s))

leetcode 資料結構 探索陣列和字串

1 集合 由乙個或多個確定的元素所構成的整體。集合裡的元素型別不一定相同,集合裡的元素沒有順序。2 陣列 陣列會用一些名為索引的數字來標識每項資料在陣列中的位置。陣列中的元素在記憶體中是連續儲存的,且每個元素占用相同大小的記憶體。對於陣列,計算機會在記憶體中申請一段連續的空間,並且會記下索引為0處的...

資料結構 哈夫曼樹

哈夫曼樹是二叉樹的一種。被稱為最優二叉樹。實際應用中最重要的是帶權路徑長度。樹的路徑長度 樹中每個結點的路徑長度之和。權 附加在樹節點上,表示出現的概率。樹的帶權路徑長度 所有葉子結點帶權長度之和。看例項 的結點路徑長度 從d到 a的路徑,共走了兩條邊,所以為2。樹中的葉子結點有 d,e和 f。結點...

資料結構 哈弗曼樹

code for fun created by dream whui 2015 2 8 include stdafx.h include using namespace std typedef struct 定義哈弗曼樹的結構 htnode,huffmantree typedef char huff...