二分法可以分为二分查找,和二分区间,这两个是有区别的,一定要分清

[l,r]
k=0
// 闭区间,需要等号
for l<=r {
// l<=mid<rmid = (l+r) / 2 if check(s[mid]) k=mid breakelse if  s[mid] > target {r = k}else{l = k+1}
}

二分区间,则分为左边界和由边界,左边界:[0,k] [k+1,n-1],右边界:[0,k-1],[k,n-1]

对于闭区间[l,r]
l<=mid<r :用于返回左区间
mid= (l+r)/2// l<mid<=mid; 用于返回右区间
mid2= (l+r+1)/2a[k] 符合左边界条件

使用比较熟悉的闭区间,[l,r],这样不会有数组越界,同时使用使用mid=(l+r)/2, 那么其缩小的方式就固定了,r=k或者l=k+1,这是要避免区间死循环。同时其退出条件为l<=r,因为是闭区间,要保证能够全部访问到

l,r:=0,len(nums)-1k:=0// 二分法,的边界条件,a[k]要最小for l<=r{// 下边界效应k=(l+r) /2 fmt.Println(k)// 满足条件 如果使用<=,就可能死循环if nums[k] < nums[r]{r = k}else{l = k+1}}

二分区间的左右边界-Leetcode 33题相关推荐

  1. leetcode刷题笔记——二分查找

    leetcode刷题笔记--二分查找 目前完成的贪心相关的leetcode算法题序号: 中等:80,81 困难:4 来源:力扣(LeetCode) 链接:https://leetcode-cn.com ...

  2. 【leetcode刷题】 64.数组的度——Java版

    ⭐欢迎订阅<leetcode>专栏,每日一题,每天进步⭐ 看明白了就不难,总结一下就是要找出数组的众数,并且还有找出众数在数组中第一次出现和最后一次出现的位置,两个位置组成区间长度就是答案 ...

  3. 卷进大厂系列之LeetCode刷题笔记:二分查找(简单)

    LeetCode刷题笔记:二分查找(简单) 学算法,刷力扣,加油卷,进大厂! 题目描述 涉及算法 题目解答 学算法,刷力扣,加油卷,进大厂! 题目描述 力扣题目链接 给定一个 n 个元素有序的(升序) ...

  4. C#LeetCode刷题-二分查找​​​​​​​

    二分查找篇 # 题名 刷题 通过率 难度 4 两个排序数组的中位数 C#LeetCode刷题之#4-两个排序数组的中位数(Median of Two Sorted Arrays)-该题未达最优解 30 ...

  5. LeetCode高频题33. 搜索旋转排序数组

    LeetCode高频题33. 搜索旋转排序数组 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面改编而来的题目 互联网大厂们在公司养了一大批A ...

  6. 再也不怕女朋友问我二分查找了!【手绘漫画】图解二分查找(修订版)(LeetCode 704题)

    文章目录 图解算法与数据结构 1.前言 2.代码 3.实例(LeetCode 704题) 图解算法与数据结构 1.前言 上次讲到的更的二分查找模板在很多地方让我使用起来不是特别的舒服,感谢B站上的y大 ...

  7. Leetcode刷题笔记——剑指offer II (五)【二分、排序、回溯】

    这里写目录标题 二分查找 剑指 Offer II 069. 山峰数组的顶部 剑指 Offer II 070. 排序数组中只出现一次的数字 剑指 Offer II 071. 按权重生成随机数 剑指 Of ...

  8. 《LeetCode力扣练习》第33题 搜索旋转排序数组 Java

    <LeetCode力扣练习>第33题 搜索旋转排序数组 Java 一.资源 题目: 整数数组 nums 按升序排列,数组中的值 互不相同 . 在传递给函数之前,nums 在预先未知的某个下 ...

  9. 【组队学习】【33期】LeetCode 刷题

    Leetcode刷题 航路开辟者:杨世超 领航员:肖桐 航海士:刘军.孙子涵.汪超.赵子一 基本信息 开源内容:https://github.com/itcharge/LeetCode-Py 开源内容 ...

最新文章

  1. 【C#实践】详解三层转七层:登录
  2. 从这篇文章可以看出有些错误,由此可以看出,还是看msdn要好的多,这是我的经验
  3. 求杨辉三角的前n行数据_LeetCode算法第118题:杨辉三角
  4. 猜数(二分、线段树)
  5. Jupyter进阶教程
  6. 电子计算机诞生于1946年第几台,人类第一台电子计算机诞生于1946年2月
  7. linux常用命令速记
  8. VC实现将程序最小化到托盘
  9. 服务器网络问题排查各种工具
  10. django+xadmin在线教育平台(四)
  11. S3C2440 LCD驱动(FrameBuffer)实例开发一(转)
  12. Oracle Coherence运维监控
  13. 自动驾驶之多传感器融合实践(1)------激光雷达点云数据处理
  14. po是什么意思java_PO/VO/DAO/BO/POJO是什么(JAVA 的解釋)
  15. HTML页面转PDF 思路
  16. 偏差平方和说明什么_什么是平方误差和均方误差
  17. 强大的excel密码破解网站 解决了忘记excel密码的问题
  18. catia 二次开发:环境变量路径,检查路径存在,关闭文件,对象为空,获取pad对象,err,part的product,全局变量,常量,SystemService,input,选择文件 时间,函数调用
  19. 线段树 从入门到进阶(超清晰,简单易懂)
  20. 组件封装 - steps组件

热门文章

  1. 【历史上的今天】10 月 26 日:NetBSD 系统发布;Windows 8 诞生;微软推出 Surface 系列
  2. 程序员如何知道女朋友有没有偷看手机?
  3. 程序员职场小白修炼记1——安晓辉《解忧程序员》读书笔记
  4. 我用Python分析1585家电商车厘子销售数据,发现这些秘密!
  5. 行列式怎样用计算机算,行列式计算器怎么样?行列式计算器如何使用?
  6. Word - 为何在 Word 中打字时未到行尾就自动换行?
  7. 背了单词再也不怕忘,多邻国的AI要逆天!
  8. bzoj 1477 青蛙的约会 拓展欧几里得(详细解析)
  9. tf.control_dependencies与tf.identity组合详解
  10. html5黑板源码,HTML5/Canvas黑板涂鸦动画