Day5:剑指 Offer 11. 旋转数组的最小数字

题目

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。

给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组的最小值为1。

二分法变形

class Solution {
    public int minArray(int[] numbers) {
        int l = 0,r = numbers.length-1;
        int m;
        while (l <= r){
            m = l + (r-l)/2;
            if (numbers[m] > numbers[r]){
                l = m +1;
            }else if(numbers[m] == numbers[r]){
                r--;
            }else {
                r = m ;
            }
        }
        return numbers[l];
    }
}
上一篇:Scrum冲刺博客Day5


下一篇:day5 crm客户管理权限控制代码优化