哈希思想:我们定义好一个哈希函数,然后把一些数据对应的key输入到哈希函数会得到一个index,key可以自己设置。创建一个哈希表,来保存好index和这个index对应到的数据。可能不同的数据却生成了一样的index,这时候就会面临冲突,我们可以通过一些方法来解决。
我们主要是写好哈希函数和当index冲突的时候的处理方法。我这个使用的是直接寻址法
两数之和(1)
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
if not nums:
return none
hashset = {}
for i,value in enumerate(nums):
distance = target - value
for index, zhi in hashset.items():
if distance==zhi:
return [index, i]
hashset[i] = value
return None
return None
Happy Number(202)
class Solution:
def __init__(self):
self.hashset = []
def isHappy(self, n):
"""
:type n: int
:rtype: bool
"""
sums = sum(map(lambda x:x**2,map(int, str(n))))
if sums in set(self.hashset):
return False
elif sums ==1:
return True
else:
self.hashset.append(sums)
return self.isHappy(sums)