给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例:
给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
注:要考虑i,j不相等,即两元素的下标不能相等
- 一开始的代码
一开始想的是找到一个在nums中和item相加等于target的数,再返回其下标,结果运行时间太长了
for i,item in enumerate(nums): for j in nums: if nums.index(j)!=i: x=j+item if x==target: return i,nums.index(j)
- 改进代码
后来发现,只要在nums中找到target-item即可。。。,减少了遍历的时间
for i, item in enumerate(nums): if target - item in nums and nums.index(target - item) != i: return i, nums.index(target - item)