题解 | #和为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 {};
  }
};

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

全部评论

相关推荐

头像
11-07 01:12
重庆大学 Java
精致的小松鼠人狠话不多:签哪了哥
点赞 评论 收藏
分享
11-18 15:57
门头沟学院 Java
最终归宿是测开:这个重邮的大佬在重邮很有名的,他就喜欢打92的脸,越有人质疑他,他越觉得爽😂
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务