日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

哈希表(散列表)基础概念与经典题目(Leetcode题解-Python语言)之下——设计键

發布時間:2023/12/4 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 哈希表(散列表)基础概念与经典题目(Leetcode题解-Python语言)之下——设计键 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在很多應用中,我們會發現某種映射關系(模式),但它并不是簡單一 一對應的。這時,我們就要從鍵 key 入手,通過設計合適的鍵,建立映射關系。leetbook的這個章節總結了一些常見的鍵,以供參考。

49. 字母異位詞分組

class Solution:def groupAnagrams(self, strs: List[str]) -> List[List[str]]:str_dict = dict()for word in strs:s_word = str(sorted(word))if s_word in str_dict:str_dict[s_word].append(word)else:str_dict[s_word] = [word]ans = []for value in str_dict.values():ans.append(value)return ans

對于有相同字母但是位置不同的單詞(字母異位詞),可知它們的模式(共通點)就是字母構成相同,所以只需要以固定的順序比較這些單詞(排序),即可發現這個模式。注意 sorted(word) 得到的是列表,不能作為 key,應該將其轉為字符串 str 后再作為 key

249. 移位字符串分組

class Solution:def groupStrings(self, strings: List[str]) -> List[List[str]] :hashtable = defaultdict(list) # 遇到不存在的key不會報錯的dictfor s in strings :if s[0] == 'a':hashtable[s].append(s)else:key = list(s)key[0] = 'a'diff = ord(s[0]) - ord('a')for i in range(1, len(s)): key[i] = chr(ord(s[i]) - diff) if ord(s[i]) - diff >= ord('a') else chr(ord(s[i]) - diff + 26)key = ''.join(key)hashtable[key].append(s)ans = []for mode, sublist in hashtable.items():ans.append(sublist)return ans

此處用到了 collections.defaultdict,顧名思義,就是有默認值的 dict,因此遇到不存在的 key 不會報 KeyError 錯誤。對移位字符串進行分組,我們可以用每個組的第一個字符串,也就是首字母為 ‘a’ 的字符串作為該組的代表(鍵),因為這個字符串包含了該組的字符串長度的信息與各字母偏移的信息,同組的其余字符串只不過是相對它有一定的偏移而已。因此,對于一個字符串,首先將其首字母變成 ‘a’,記錄偏移量 diff,后面的字母都按照 diff 進行偏移,若越界則加 26 循環回來,得到這個字符串對應的鍵并加入到字典中。

36. 有效的數獨

class Solution:def isValidSudoku(self, board: List[List[str]]) -> bool:rows = collections.defaultdict(list)cols = collections.defaultdict(list)squares = collections.defaultdict(list)for i in range(len(board)):for j in range(len(board[0])):if board[i][j] == '.':continueif board[i][j] in rows[i] or board[i][j] in cols[j] or board[i][j] in squares[(i//3, j//3)]:return Falseelse:rows[i].append(board[i][j])cols[j].append(board[i][j])squares[(i//3, j//3)].append(board[i][j])return True

數獨中的行、列、3x3宮都是一種模式,相同行、列的元素顯然它的行索引 i 和列索引 j 是一樣的,那同一個3x3宮的元素呢?可以發現,元素的行或者列整除3的結果,表示了元素從行或者列數起的第幾個宮內,所以可以使用(i // 3, j // 3)作為3x3宮的模式。

652. 尋找重復的子樹

class Solution():def findDuplicateSubtrees(self, root):trees = collections.defaultdict()trees.default_factory = trees.__len__ #當嘗試查找字典中不存在的鍵時,會創建一個條目,其值等于字典中的項目數count = collections.Counter()ans = []def lookup(node):if node:uid = trees[node.val, lookup(node.left), lookup(node.right)] # 前序遍歷count[uid] += 1if count[uid] == 2:ans.append(node)return uidlookup(root)return ans

trees.default_factory = trees.__len__是一個小技巧,講解在這里。在這里我們用子樹的(根節點值、左子樹uid、右子樹uid)作為 uid,唯一標識這個子樹。只有當兩個子樹的 uid 相同時,認為這兩個子樹是相同的。

總結

以上是生活随笔為你收集整理的哈希表(散列表)基础概念与经典题目(Leetcode题解-Python语言)之下——设计键的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久黄色录像 | 色就是色欧美 | 亲子乱对白乱都乱了 | 永久黄色网址 | 日韩av一级片 | 久久亚洲综合国产精品99麻豆精品福利 | 亚洲精品成人无码熟妇在线 | 重口变态虐黄网站 | 欧美交换国产一区内射 | 日韩特级片 | 成人影片在线 | av亚州 | 婷婷综合在线观看 | 亚洲熟女www一区二区三区 | 天堂精品在线 | av在线播放网址 | 成人午夜免费在线观看 | 亚洲av无码久久精品狠狠爱浪潮 | 人人澡人人透人人爽 | 我和单位漂亮少妇激情 | 变态另类一区二区 | 视频一区二区三区在线观看 | 阿v视频免费在线观看 | 人妻体内射精一区二区 | 欧美视频亚洲视频 | 久久亚洲精品国产精品黑人v | 丨国产丨调教丨91丨 | 亚洲第一色区 | 亚洲欧美校园春色 | 影音先锋中文字幕人妻 | 亚洲高清在线观看 | 久久久网址 | 男人狂揉女人下部视频 | 国模无码大尺度一区二区三区 | 91看黄| 99热免费观看| 熟妇人妻一区二区三区四区 | 国产精品一区在线播放 | 欧美精品久久久久 | 青青草视频免费 | 欧美在线激情视频 | 国产亚洲精品女人久久久久久 | 欧美日韩国产电影 | 亚洲香蕉在线观看 | 免费黄色大片 | 欧美视频xxx | 天堂影视在线观看 | 五月激情视频 | 国产伊人久久 | 中文字幕一区二区三区乱码人妻 | 黄色网免费观看 | 国产精品婷婷 | 欧洲中文字幕日韩精品成人 | 亚洲www久久久 | 免费又黄又爽又色的视频 | 免费国产网站 | 在线观看av网站 | 国产人成在线观看 | 97操操 | 村姑电影在线播放免费观看 | 99碰碰| 亚洲欧美国产精品专区久久 | 久久国产精品毛片 | 久久av无码精品人妻系列试探 | av资源共享 | 北条麻妃久久 | 操亚洲美女 | 无码国产色欲xxxx视频 | 国产51精品 | 国产jk精品白丝av在线观看 | 已满18岁免费观看电视连续剧 | 青青草婷婷 | 久久久久久97 | 99热国产 | 国产一区麻豆 | 国产91色在线 | 欧色图 | a在线观看视频 | 欧美色亚洲色 | 国产精品久久久无码一区 | 日本激情视频 | 青青青在线免费 | 精品黑人一区二区三区在线观看 | 欧美在线免费观看视频 | 国精产品乱码一区一区三区四区 | 永久看看免费大片 | 一卡二卡在线视频 | 人妻少妇精品一区二区 | 北条麻妃99精品青青久久 | 最新色网址 | 欧美日韩中文字幕在线 | av中文字幕网 | 国产人免费人成免费视频 | 亚洲图片欧美色图 | 性高湖久久久久久久久免费 | 91久久久久 | 亚洲天堂色 | 日韩一卡二卡在线 | 欧美在线一区视频 |