BM21 旋转数组的最小数字
- 比右不比左,因为除法取整在只有两个元素时,会取到左边的元素,会导致判断取等,但是如果和右边在左右区间相差一就不会出现这种情况,而是继续操作直到区间端点相等
在元素值相等但是区间没有缩减应该如何?
缩减右区间端点值,因为此时left<right,缩减右边既不会错过最小值,因为mid和right的值相等;也不会导致区间出错,最多left=right-1时,right-=1后,left=right
为什么left = mid+1?
如果不这样,当left+1=right时,mid会等于left,导致left=mid陷入死循环;而nums[mid]> nums[right]
保证了mid=left不会是最小的,还有right比它更小
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Min的博客!
评论