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)