LeetCode:1.两数相加
题目:给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:给定 nums = [2, 7, 11, 15], target = 9
返回:[0, 1]
为了测试代码是否重复利用数组元素,增加一个给定:nums = [0, 3, 4, 0],target =0
返回:[0, 3]
代码如下:
returnNums = []
nums = [int(t) for t in input("请输入一组整数数组,以空格分开:").split()]
target = int(input("请输入目标值:"))
for i in nums:
nums_index = nums.index(i)
for t in nums[nums_index+1:]:
if t + i == target and len(returnNums) != 2:
returnNums.append(nums.index(i))
returnNums.append(nums[nums_index+1:].index(t) + (nums_index+1))
print("返回值:",returnNums)
编译结果:
请输入一组整数数组,以空格分开:2 7 11 15
请输入目标值:9
返回值: [0, 1]
请输入一组整数数组,以空格分开:0 3 4 0
请输入目标值:0
返回值: [0, 3]
注意点:
①先把按一定格式输入的数,储存到列表里面(这里是nums)。
②利用for循环遍历列表,因为两数相加,需要遍历两次,但是第二次可以从第一次的索引后开始遍历。因为:a+b=b+a,num[0]+num[1]=num[1]+num[0]。这样可以减少不必要的时间。
③最后返回的是索引不是索引对应的值,所以需要利用index()。
④对于t的索引,我们是从“新”列表的起始位置开始遍历,所以利用index找t值对应的索引,需要从“新”列表(nums[nums_index+1:])开始寻找。但是最终返回的索引值是针对“原”列表,所以需要加上(nums_index+1)。