Leetcode-167(有序数组的 Two Sum)

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位置需要注意

原文地址:https://www.cnblogs.com/Mustardseed/p/12664669.html