1、雜湊表:雜湊表
是一種使用雜湊函式
組織資料,以支援快速插入和搜尋的資料結構。通過選擇合適的雜湊函式,雜湊表可以在插入和搜尋方面實現出色的效能。
雜湊表的關鍵思想是使用雜湊函式將鍵對映到儲存桶。
(1)雜湊集合:集合
資料結構的實現之一,用於儲存非重複值。
(2)雜湊對映:對映
資料結構的實現之一,用於儲存(key, value)
鍵值對。
雜湊函式: y = x%5 (x是鍵值,y是桶的索引)
插入:通過雜湊函式解析鍵,將它們對映到相應的桶中。
搜尋:通過相同的雜湊函式解析鍵,並僅在特定儲存桶中搜尋。
2、雜湊集合的操作:add(value)
:向雜湊集合中插入乙個值;
remove(value)
:將給定值從雜湊集合中刪除。
3、雜湊對映的操作:get(key)
:返回給定的鍵所對應的值,如果對映中不包含這個鍵, 返回none。
remove(key)
:如果對映中存在這個鍵,刪除這個數值對。
練習題:(1)快樂數:
defhashset =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)
deff(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)字串無重複最長子串。
deff(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))
deff(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...