梦开始的地方,两数之和
巧妙之处在于value做key,idx做val
可能会问:如果value冲突的?即两个一样的值
首先这是两数和问题:
- 如果这两个重复的数正好被选上,那么一个记录在map中,一个未记录,没问题
- 如果只是一个数倍选上,那么map中的记录会被后续出现的重复数更新,但并不影响(题设有说明)
import copy
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
records = dict()
for idx, val in enumerate(nums):
if target - val in records.keys():
return [records[target - val], idx]
else:
records[val] = idx
return []