当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。
哈希表是根据关键码的值而直接进行访问的数据结构。
本质就是对数据进行赋index, 进而实现快速查找
list2 = [] # 建立一个空list
list2[:0] = "gjgf" # 用这个list对 "gigf" 这个string进行切片,并存回list2
print(list2) # 打印出来list2
349两个数组交集:set 和 list互相转化,使用set 求交集
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
set1 = set(nums1)
set2 = set(nums2)
set3 = set1 & set2
return list(set3)
这道题目,主要要学会使用一种哈希数据结构:unordered_set,这个数据结构可以解决很多类似的问题。
1, 两数之和
for 循环使用 enumerate
>>> seq = ['one', 'two', 'three']
>>> for i, element in enumerate(seq):
... print i, element
...
0 one
1 two
2 three
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: # 遍历当前元素,并在map中寻找是否有匹配的key
return [records[target- value], index]
records[value] = index # 这一句是核心代码,把value当成key,来存储index
return []
这里的dict 是拿value当key, 来存储index