给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。
函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。
双指针
class Solution:
def twoSum(self, numbers: List[int], target: int) -> List[int]:
i = 0
j=len(numbers)-1
while i<j:
if numbers[i]+numbers[j]==target:
return [i+1,j+1]
elif numbers[i]+numbers[j]<target:
i+=1
else:
j-=1
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
int i = 0;
int j = numbers.size()-1;
while (i < j) {
int sum = numbers[i] + numbers[j];
if (sum == target) return {i+1, j+1};
else if (sum > target) j--;
else i++;
}
return {-1,-1};
}
};