leetcode153.寻找旋转排序数组中的最小值

leetcode153.寻找旋转排序数组中的最小值_第1张图片

思路源于 

【小白都能听懂的算法课】【力扣】【Leetcode153】寻找旋转排序数组中的最小值|二分查找|数组

 

class Solution {
    public int findMin(int[] nums) {
        int left=0,right=nums.length-1;
        while(left<=right){
            int mid=(right-left)/2+left;

            //left和right处于单调区间中那么left处就是最小值
            if(nums[left]<=nums[mid]&&nums[mid]<=nums[right])
                return nums[left];
            //mid落在左单调区间
            else if(nums[left]<=nums[mid])
                left=mid+1;
            //mid落在右单调区间
            else
                right=mid;//最小值落在右单调区间时有可能是mid
        }
        return -1;
    }
}

 

你可能感兴趣的:(算法,leetcode,数据结构)