2024-11-24发表2024-11-26更新1 分钟读完 (大约179个字)二分法开闭区间写法异同主要分为四类:(以二分查找为例) 闭区间 左开右闭 左闭右开 开区间 12345678left , right = 0 , n-1while left <= right: mid = (left + right)//2 if nums[mid]<target: left = mid + 1 else: right = mid - 1return left 12345678left , right = -1 , n-1while left < right: mid = (left + right)//2 if nums[mid]<target: left = mid else: right = mid - 1return right 12345678left , right = 0 , nwhile left < right: mid = (left + right)//2 if nums[mid]<target: left = mid + 1 else: right = midreturn left 12345678left , right = -1 , nwhile left+1 < right: mid = (left + right)//2 if nums[mid]<target: left = mid else: right = midreturn right tips 可以看到主要区别就是left,right的初始值,和mid是否+-1,可以很简单地理解为,开区间就是把一个边界向外扩大了1,也即相对mid更远了,因此所有计数都相应地外扩1 二分法开闭区间写法异同https://zebraine.github.io/二分法开闭区间写法异同.html作者Zebraine发布于2024-11-24更新于2024-11-26许可协议#code