题解 | #和为S的两个数字#

和为S的两个数字

https://www.nowcoder.com/practice/390da4f7a00f44bea7c2f3d19491311b

class Solution {
 public:

  int binarySearch(vector<int> array, int target, int l, int r) {
    while (l <= r) {
      int mid = l + (r - l) / 2;
      if(array[mid] < target)
      {
        l = mid + 1;
      }
      else if(array[mid] > target){
        r = mid - 1;
      }
      else{
        return target;
      }
    }
    return -1;
  }
  vector<int> FindNumbersWithSum(vector<int> array, int sum) {
    vector<int> res;
    for(int i = 0;i<array.size();i++)
    {
      int leaveValue = binarySearch(array, sum-array[i], i+1, array.size()-1);
      if(leaveValue == -1){
        continue;
      }
      else{
        res.push_back(array[i]);
        res.push_back(leaveValue);
        return res;
      }
    }
    return {};
  }
};

先确定第一个数,然后在剩余的数组中进行二分查找。

全部评论

相关推荐

把球:这个听过,你加了就会发现是字节的hr
点赞 评论 收藏
分享
一名愚蠢的人类:多少games小鬼留下了羡慕的泪水
投递荣耀等公司10个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务