剑指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 };

 

posted @ 2019-10-20 15:55  自由之翼Az  阅读(127)  评论(0编辑  收藏  举报