两数之和
题目描述
实现
# 哈希表两数之和
nums = [int(i) for i in input().split(' ')]
target = nums.pop()
hashmap={}
for ind,num in enumerate(nums):
hashmap[num] = ind
for i,num in enumerate(nums):
# 注意这是在nums里循环,不在hash里循环是因为在hash里循环找不到相同的元素
# for i in hashmap.keys():这样会出现问题
j = hashmap.get(target - num)
if j is not None and i!=j:
print(i,j)
快乐数
题目描述
实现
# 快乐数
"""
每次算平方很费事,所以将0到9的平方存储在哈希表中,方便查询
"""
nums = [int(i) for i in input()] # >>[1, 9]
# 建立哈希表
hashmap = {}
for i in range(10):
hashmap[i] = i**2
ans = False
loop = 10000
while(loop > 0):
loop -= 1
new = 0
for key in nums:
new += hashmap.get(key)
if new == 1:
ans = True
break
else:# 将均方和数值变成一位一位的放在nums里
new = str(new)
nums = [int(i) for i in new]
print(ans)
写完了之后发现并不是这样利用哈希表,哈哈哈
这里是官方答案