给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
思路一:
要找出两个数字并且同一个数字不能使用两次,需要我们对原数组进行双重遍历,并且内层循环j的范围要比外层循环i范围小1,只要i+j=9,即可返回i,j
思路二:
因为两数之和已经确定,实际上我们只需要用“和”减去其中一个加数,然后看另一个加数在不在数组中即可,这样只需遍历数组一次
1 class Solution: 2 def twoSum(self, nums: List[int], target: int) -> List[int]: 3 # 思路一 4 # for i in range(len(nums)-1): 5 # for j in range(i+1,len(nums)): 6 # if nums[i] + nums[j] == target: 7 # return [i,j] 8 # 思路二 9 for i in range(len(nums)-1): 10 if (target - nums[i]) in nums[i+1:]: 11 i_index = nums.index(nums[i]) 12 return [i,nums.index(target - nums[i],i_index+1)]