leetcode
按照模块刷题,点击进入使用的刷题目录
双指针
1.两数之和 II - 输入有序数组
题干:
167.两数之和 II - 输入有序数组
解题思路: i,j分别指向数组第一个元素和最后一个元素,若两者相加>target则–j;<target则++i;最后返回{i+1,j+1}
代码:
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
for(int i=0,j=numbers.size()-1;i<j;){
if(numbers[i]+numbers[j]>target){
--j;
}
else if(numbers[i]+numbers[j]<target){
++i;
}
else{
return{i+1,j+1};
}
}
return{};
}
};
改进: 可以使用while循环代替for循环,即改为while (i < j)