題目
這個solution用two pointers從兩邊往中間找,如果numbers[l] + numbers[r] == target 就返回l r組成的數組,但記住一定要加1, 因為l r是從0開始的index。 如果和比target大,那就是現在的numbers[r]大了,用r--選擇向左一位的元素,l同理。循環直至找到最終結果。
我發的題目會有些是有鎖的,我會把所有有鎖的題目的截圖發上來,沒有鎖的就不一定咯:p
class Solution {
public:
vectortwoSum(vector& numbers, int target) {
int l = 0, r = numbers.size() - 1;
while (l < r) {
if (numbers[l] + numbers[r] == target)
return {l + 1, r + 1};
else if (numbers[l] + numbers[r] > target)
r--;
else
l++;
}
return {0, 0};
}
};