算法珠玑——双指针(2)
https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted
完全随便测的一次。用例太少。
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
/*
基本情况: left(1) = 0
right(1) = numbers.size()-1
终止情况: 只有一个,left 不小于 right
*/
for (int left = 0, right = numbers.size()-1; left < right;)
{
/*
归纳步骤: left 和 right 目标值与 target 做对比。
*/
if ((numbers[left] + numbers[right]) < target)
left++;
else if ((numbers[right] + numbers[left]) > target)
right--;
else
return {left+1, right+1};
}
return {};
}
};
本代码包裹在了for循环中,为了提高性能减少全局变量的使用。
此代码仍没有极致优化。