Python算法_两数之和(01)

给定一个整数数组 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)]

 

posted @ 2020-10-11 22:37  止一  阅读(701)  评论(0编辑  收藏  举报