当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法
242.有效的字母异位词
维护一个dict,先把第一个字符串的字母加进去,然后如果第二个字符串的字母出现了就把对应key的值减一:
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
map1 = {}
for a in s:
if a not in map1:
map1[a] = 1
else:
map1[a] += 1
for b in t:
if b in map1:
map1[b] -= 1
else: return False
for key in map1:
if map1[key] != 0:
return False
return True
但是既然都写Python了,语法糖也是要用起来:
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
return Counter(s) == Counter(t)
349. 两个数组的交集
太优雅了:
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
return list(set(nums1)&set(nums2))
202. 快乐数
注意是出现循环的时候说明这个数不是快乐数:
class Solution:
def isHappy(self, n: int) -> bool:
A = set()
while True:
n = self.nums(n)
if n == 1:
return True
if n in A:
return False
else: A.add(n)
return False
def nums(self, n:int):
total = 0
while n:
r = n%10
total += r**2
n //= 10 //注意这里是//=啊
return total
1. 两数之和
abandon abandon。。。
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
deltas = set()
for i, v in enumerate(nums):
if (target - v) not in deltas:
deltas.add(v)
else: return[nums.index(target - v), i]
1061

被折叠的 条评论
为什么被折叠?



