给定一个数组,找到两个总和为特定值的索引。
例如给定数组 [1, 2, 3, -2, 5, 7],给定总和 7,则返回索引 [1, 4]。
对于传入的数组 nums,返回总和为 val 的两个值的索引;
如果数组中没有和为目标值的元素,则返回 None。
如果传入的数组 nums 或者目标值 val 为 None,需要使用 raise 语句显示 TypeError。
如果传入的数组为空数组,需要使用 raise 语句显示 ValueError。
def two_sum(nums,val):
if nums is None or val is None:
raise TypeError('nums or target cannot be None')
if not nums:
raise ValueError('nums cannot be empty')
sum_indexes = []
for i in range(0,len(nums)):
diff = val - nums[i]
if diff in nums:
if [nums.index(diff),i] not in sum_indexes:
sum_indexes.append([i,nums.index(diff)])
print([i,nums.index(diff)])
print(sum_indexes)
a = [1,2,3,4,-5,5,6,-3]
b = 7
two_sum(a,b)
利用二元列表,主要考虑了索引 [a,b] 和 [b,a] 重复的问题:如a = [1,2,3,4,-5,5,6,-3], 就会出现 [0,6] 和 [6,0] 这样的重复答案