剑指offer——64和为s的数字
题目描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
输出描述:
对应每个测试案例,输出两个数,小的先输出。
题解:
使用双指针,头和尾,和大了,右指针左移,和小了,左指针右移。
1 class Solution { 2 public: 3 vector<int> FindNumbersWithSum(vector<int> array, int sum) { 4 if (array.size() < 2)return{}; 5 int L = 0, R = array.size() - 1; 6 while (L < R) 7 { 8 if (array[L] + array[R] == sum)return { array[L] , array[R] }; 9 else if (array[L] + array[R] > sum)--R; 10 else ++L; 11 } 12 return {}; 13 } 14 };