pythonhashmap
『壹』 python怎麼構建hash map
字典
python里的字典就像java里的HashMap,以鍵值對的方式存在並操作,其特點如下
通過鍵來存取,而非偏移量;
鍵值對是無序的;
鍵和值可以是任意對象;
長度可變,任意嵌套;
在字典里,不能再有序列操作,雖然字典在某些方面與列表類似,但不要把列表套在字典上
點擊(此處)折疊或打開
#coding:utf-8
#!/usr/bin/python
# Filename: map.py
table = {'abc':1, 'def':2, 'ghi':3}
print table
#字典反轉
map=dict([(v,k) for k, v in table.iteritems()])
#字典遍歷
for key in map.keys():
print key,":",map[key]
print len(map)
print map.keys()
print map.values()
#字典的增,刪,改,查
#在這里需要來一句,對於字典的擴充,只需定義一個新的鍵值對即可,
#而對於列表,就只能用append方法或分片賦值。
map[4]="xyz"
print map
del map[4]
print map
map[3]="update"
print map
if map.has_key(1):
print "1 key in"
{'abc': 1, 'ghi': 3, 'def': 2}
1 : abc
2 : def
3 : ghi
3
[1, 2, 3]
['abc', 'def', 'ghi']
{1: 'abc', 2: 'def', 3: 'ghi', 4: 'xyz'}
{1: 'abc', 2: 'def', 3: 'ghi'}
{1: 'abc', 2: 'def', 3: 'update'}
1 key in
『貳』 993. 二叉樹的堂兄弟結點(Python)
更多精彩內容,請關注 【力扣簡單題】 。
難度:★★☆☆☆
類型:二叉樹
在二叉樹中,根節點位於深度 0 處,每個深度為 k 的節點的子節點位於深度 k+1 處。
如果二叉樹的兩個節點深度相同,但父節點不同,則它們是一對堂兄弟節點。
我們給出了具有唯一值的二叉樹的根節點 root,以及樹中兩個不同節點的值 x 和 y。
只有與值 x 和 y 對應的節點是堂兄弟節點時,才返回 true。否則,返回 false。
示例 1
輸入:root = [1,2,3,4], x = 4, y = 3
輸出:false
示例2
輸入:root = [1,2,3,null,4,null,5], x = 5, y = 4
輸出:true
示例3
輸入:root = [1,2,3,null,4], x = 2, y = 3
輸出:false
(參考官方解答)
方法:標記父節點與深度
思路
當且僅當一對節點深度相同而父節點不相同時,它們是堂兄弟節點。一種非常直接的方法就是通過某種方法求出每一個節點的深度與父節點。
我們用深度優先搜索標記每一個節點,對於每一個節點 node,它的父親為 par,深度為 d,我們將其記錄到 Hashmap 中:parent[node.val] = par 且 depth[node.val] = d。
如有疑問或建議,歡迎評論區留言~
『叄』 python的字典怎麼擴展成C呢拿什麼數據結構接收100分 詳細進來~
1、直接用PyObject。上策
2、轉換成C++ STL的Map容器是直接對應的。中策
3、使用的是數據,而不是結構,只要能讓中間的數據發揮作用,就沒必要一樣的結構,也就是轉換成具體適合你那接下來C中應用的結構。比如只用到某幾個鍵和某幾個值。如果C中根本不應用,就回到1。中策
4、自己在C中實現這種字典。建立散列表或者紅黑樹表。或者最簡單的兩個一維數組,實現key[],value[]的一一對應。下策