前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >二分查找模板,包括左边界右边界

二分查找模板,包括左边界右边界

作者头像
opencode
发布2022-12-26 15:34:51
3890
发布2022-12-26 15:34:51
举报
文章被收录于专栏:知识同步

一次记住所有情况

二分法最怕的就是边界的处理,一般见到的就是下面三种情况

假设数组是升序的

查找元素

代码语言:javascript
复制
int binary(vector<int> nums, int target){
    int n=nums.size();
    int l=0, r=n-1;
    while(l<=r){
        int mid=(l+r)/2;
        if(nums[mid]==target) return mid;
        else if(nums[mid]>target) r=mid-1;
        else l=mid+1;
    }

    return -1;
}

寻找左边界情况,右边要往左边靠

代码语言:javascript
复制
int binary(vector<int> nums, int target){
    int n=nums.size();
    int l=0, r=n-1;
    while(l<=r){
        int mid=(l+r)/2;
        if(nums[mid]<target) l=mid+1;;
        else r=mid-1;
    }

    if(l>=n || nums[l]!=target) return -1;

    return l;
}

寻找右边界情况,左边要往右边靠

代码语言:javascript
复制
int binary(vector<int> nums, int target){
    int n=nums.size();
    int l=0, r=n-1;
    while(l<=r){
        int mid=(l+r)/2;
        if(nums[mid]>target) r=mid-1;;
        else l=mid+1;
    }

    if(r<0 || nums[r]!=target) return -1;

    return r;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 查找元素
  • 寻找左边界情况,右边要往左边靠
  • 寻找右边界情况,左边要往右边靠
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档