力扣Hot100题解之哈希表Python实现详解
一、1. 两数之和
class Solution:
def twoSum(self, nums, target):
sub_data = {}
for idx, x in enumerate(nums):
if target-x in sub_data:
return [idx, sub_data[target-x]]
sub_data[x] = idx
二、49. 字母异位词分组
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
dict_s = collections.defaultdict(list)
for s in strs:
list_s = "".join(sorted(s))
dict_s[list_s].append(s)
res = []
for i in dict_s:
res.append(dict_s[i])
return res
三、128. 最长连续序列
class Solution:
def longestConsecutive(self, nums):
long_seq = 0
num_set = set(nums) # 这里就是利用字典去重,减少点运算
for n in nums:
if n-1 not in num_set:
cur_num = n
cur_long_seq = 1
while cur_num + 1 in num_set:
cur_num += 1
cur_long_seq += 1
long_seq = max(long_seq, cur_long_seq)
return long_seq
作者:Y1nhl