# 梦开始的地方,Leetcode:1.两数之和,学透哈希表,map使用有技巧 # # 两数之和,学透哈希表,map使用有技巧! # 给定一个整数数组nums和一个整数目标值target, # 请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。 # # 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 # 你可以按任意顺序返回答案。 # # # 示例1: # 输入:nums = [2, 7, 11, 15], target = 9 # 输出:[0, 1] # 解释:因为nums[0] + nums[1] == 9 ,返回[0, 1] 。 # # 示例2: # 输入:nums = [3, 2, 4], target = 6 # 输出:[1, 2] # # 示例3: # 输入:nums = [3, 3], target = 6 # 输出:[0, 1] nums = [2, 7, 11, 15] target = 9 path_dict = {} res = [] # way1 def target_index(start_index, nums, target, path_dict, res): if sum(path_dict.values()) == target: # print("path_dict.keys()=", path_dict.keys()) res.append(list(path_dict.keys())) return for i in range(start_index, len(nums)): path_dict.update({i: nums[i]}) # print(path_dict) target_index(i+1, nums, target, path_dict, res) path_dict.pop(i) return res[0] print(target_index(0, nums, target, path_dict, res)) # way2: hash map def two_sum(nums, target): dict_a = {} for i in range(len(nums)): left = target - nums[i] if left in dict_a.keys(): return [dict_a[left], i] dict_a.update({nums[i]:i}) return []