1.题目描述:
在有序数组中找出两个数,使它们的和为 target。
Input: numbers={2, 7, 11, 15}, target=9 Output: index1=1, index2=2
2.解题思路:
1.升序排列的数组
2.使用双指针,一个指针指向值较小的元素,另一个指针指向值较大的索引;第一个指针从低指向高
,第二个指针从高指向低。
3.如果两个指向的值之和大于target,那么大的指针应该减少。
4.如果两个指向的值之和小于target,那么小的指针应该增加。
1 class Solution(object): 2 def twoSum(self, numbers, target): 3 """ 4 :type numbers: List[int] 5 :type target: int 6 :rtype: List[int] 7 """ 8 if len(numbers)==0: 9 return null 10 i = 0 11 j =len(numbers)-1 12 while i < j: 13 if numbers[i]+numbers[j]==target: 14 index1=i+1 15 index2=j+1 16 return index1,index2 17 elif numbers[i]+numbers[j]<target: 18 i+=1 19 else: 20 j-=1 21 else: 22 return null 23 24
3.需要注意的地方:
1.number为空的情况,容易少忽略
2.while跳出循环的条件需要注意
3.else位置需要注意