网站建设企业网站制作平台,怎么制作网站地图,简洁网站,做网站申请多少类商标剑指 Offer 11. 旋转数组的最小数字
二分 要注意的是#xff0c;由于存在重复数字#xff0c;所以初始状态可能不满足二分的性质。不满足的情况是#xff1a;左边开始的数字和右边结束的数字相等#xff0c;所以一开始要缩小右边界#xff0c;让右边界的数字小于第一个数…剑指 Offer 11. 旋转数组的最小数字
二分 要注意的是由于存在重复数字所以初始状态可能不满足二分的性质。不满足的情况是左边开始的数字和右边结束的数字相等所以一开始要缩小右边界让右边界的数字小于第一个数字。这样左边的数字都大于等于第一个数字右边的数字都小于第一个数字两个区间的性质不同就可以进行二分了。还有排除递增的情况。
class Solution {public int minArray(int[] numbers) {int l 0, r numbers.length - 1;while(r 0 numbers[r] numbers[0]) r--; // 缩小右边界if(numbers[r] numbers[0]) return numbers[0]; // 排除递增的情况while(l r){int mid (l r) 1;if(numbers[mid] numbers[0]) l mid 1;else r mid;}return numbers[l];}
}