• 利用数组的有序性,双指针;
  • 如果左右指针元素之和等于sum,返回左右指针元素;
  • 如果左右指针元素之和小于sum,左指针增加;
  • 如果左右指针元素之和大于sum,右指针减少;
  • 没有满足条件,返回空数组。
class Solution {
public:
    vector<int> FindNumbersWithSum(vector<int> array,int sum) {
        int left = 0, right = array.size() - 1;
        vector<int> result;
        while (left < right) {
            if (array[left] + array[right] == sum) {
                result.push_back(array[left]);
                result.push_back(array[right]);
                return result;
            }
            else if (array[left] + array[right] < sum) {
                left++;
            }
            else {
                right--;
            }
        }
        return result;
    }
};