哈希表的作用:快速判断某个元素是否在集合里
242.有效的字母异位词
新生成一个列表用来存储26个字母。遍历t,将t含有的字母数量存起来,然后再遍历一遍s,让列表减去s含有的字母,看列表里面是否全部位置都是0;如果是,那么s和t就是有效的字母异位词
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
HashTable=[0]*26
for i in s:
HashTable[ord(i)-ord('a')]+=1
for i in t:
HashTable[ord(i)-ord('a')]-=1
for i in range(len(HashTable)):
if HashTable[i]!=0:
return False
return True
349.两个数组的交集
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
dic={}
for num in nums1:
dic[num]=dic.get(num,0)+1
res=set()
for num in nums2:
if num in dic:
res.add(num)
del dic[num]
return list(res)
202.快乐数
这道题可以使用set这个数据结构,利用非快乐数无限循环的特性。如果某个数字在set中又一次出现,说明这不是个快乐数。
class Solution:
def isHappy(self, n: int) -> bool:
record=set()
while n not in record:
record.add(n)
get_sum=0
str_n=str(n)
for i in str_n:
get_sum+=int(i)**2
if get_sum==1:
return True
else:
n=get_sum
return False
1.两数之和
使用dict()数据结构可以降低时间复杂度
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
records=dict()
for index,value in enumerate(nums):
if target-value in records:
return [index,records[target-value]]
records[value]=index
return 0