日野弥生:勉強しよう
LeetCode 167 - 两数之和 II - 输入有序数组
发表于2024年12月31日
要求常数空间,且最好一次遍历的情况下,使用双指针是最优选。双指针所指向的数值如果小于目标值,左指针移位;如果大于目标值右指针移位。 **注意,左右指针无需相遇,且该数组名义上是从1到n。结果需要分别+1。
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
int i=0,j=numbers.size()-1;
while(i<j&&(numbers[i]+numbers[j]!=target))
{
if(numbers[i]+numbers[j]>target)
j--;
else
i++;
}
if(i>=j)
return {};
return {i+1, j+1};
}
};