两数之和 变体
两数之和是比较常见的面试笔试题,在这里记录一下遇到的两数之和的变体:
变体1
要求把所有的两数之和下标记录下来
nums是给定的一个有序不重复的数组。
def twoSum(nums, target):
res = []
dic = {}
for item in nums:
dic.update({item:False})
for i in range(len(nums)):
dic[nums[i]] = True
diff = target - nums[i]
if dic[diff]:
res.append([i,nums.index(diff)])
return res
nums = [1,2,3,4,5,6,6]
target = 7
print(twoSum(nums, target))
输出:
[[3, 2], [4, 1], [5, 0], [6, 0]]
如果有许多重复值的数组,可以探索再res处进行改动。
变体2
待补充