二分法的三种情况(所有模板)

https://mp.weixin.qq.com/s/AGiwXBwX6NSqGHAvy3Cyaw
第一种:最基本情况

int binary_search(int[] nums, int target) {
    int left = 0, right = nums.length - 1; 
    while(left <= right) {
        int mid = left + (right - left) / 2;
        if (nums[mid] < target) {
            left = mid + 1;
        } else if (nums[mid] > target) {
            right = mid - 1; 
        } else if(nums[mid] == target) {
            // 直接返回
            return mid;
        }
    }
    // 直接返回
    return -1;
}

第二种:取左边界(最左边的)

int left_bound(int[] nums, int target) {
    int left = 0, right = nums.length - 1;
    while (left <= right) {
        int mid = left + (right - left) / 2;
        if (nums[mid] < target) {
            left = mid + 1;
        } else if (nums[mid] > target) {
            right = mid - 1;
        } else if (nums[mid] == target) {
            // 别返回,锁定左侧边界
            right = mid - 1;
        }
    }
    // 最后要检查 left 越界的情况
    if (left >= nums.length || nums[left] != target)
        return -1;
    return left;
}

第三种右边界(最右边的)

int right_bound(int[] nums, int target) {
    int left = 0, right = nums.length - 1;
    while (left <= right) {
        int mid = left + (right - left) / 2;
        if (nums[mid] < target) {
            left = mid + 1;
        } else if (nums[mid] > target) {
            right = mid - 1;
        } else if (nums[mid] == target) {
            // 别返回,锁定右侧边界
            left = mid + 1;
        }
    }
    // 最后要检查 right 越界的情况
    if (right < 0 || nums[right] != target)
        return -1;
    return right;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第1-50讲: 1 【第一讲】:时间是一个人最稀缺的资源,人人都需要时间管理(缘起) ⭐只有提高效率👉才能更快实现...
    金大夕阅读 3,553评论 0 4
  • 终于不用整天盯着手机,终于不用在洗澡的时候擦擦手回她消息,终于不用再聊天聊到凌晨,终于可以好好的睡觉,最重要的是我...
    麦芽螳阅读 368评论 0 0
  • 第一次在网络上买电子书有些小鸡冻,开始选中它的原因只是想找本阅读起来轻松的书打发时间。读着读着被作者轻松...
    圆葡萄阅读 1,328评论 0 0
  • 如果我的父母告诉我,他们已经做好了准备,打算开开心心的和他们的老伙伴们一起入住养老院。我一定不会同意。不是孝顺,不...
    射手座恶魔阅读 358评论 1 8
  • 在一个阴雨连绵的周末,想着出去,脑海里出现现各种各样的麻烦,需要伞,需要穿不进水的鞋,还要花个妆。对于一个懒女子来...
    郑二燕阅读 313评论 0 3