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

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

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 15:39
点赞 评论 收藏
分享
自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
06-23 11:43
门头沟学院 Java
allin校招的烤冷...:我靠,今天中午我也是这个hr隔一个星期发消息给我。问的问题还是一模一样的😅
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务