167.两数之和 II - 输入有序数组 (Easy)*
题目描述*
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。
函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。
说明*
返回的下标值(index1 和 index2)不是从零开始的。
你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。
代码*
双指针,二分查找比较前后和。
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
int l = 0, r = numbers.size() - 1;
int res = 0;
while(l < r) {
res = numbers[l] + numbers[r];
if(res == target) {
break;
}else if(res < target) {
l++;
}else if(res > target) {
r--;
}
}
return vector<int>{l + 1, r + 1};
}
};
最后更新: July 23, 2022