leecode 154. 寻找旋转排序数组中的最小值 II

 

 

class Solution {
    public int findMin(int[] nums) {
        int left = 0, right = nums.length - 1;

        int min = Integer.MAX_VALUE;

        // 宗旨 每次转换下标的时候,都会记录更新一下min
        while(left <= right)
        {
            int mid = (left + right) / 2;

            if(left <= right && nums[left] == nums[mid])
            {
                left++;
                min = Math.min(min, nums[mid]);
                continue;
            }
            if(left > right)
                return min;

            if(nums[left] < nums[mid])  //left part in order
            {
                min = Math.min(min, nums[left]);
                left = mid + 1;

            }
            else
            {
                min = Math.min(min, nums[mid]);
                right = mid - 1;
            }
        }

        return min;
    }
}

 

posted @ 2021-04-14 15:43  kpwong  阅读(29)  评论(0编辑  收藏  举报