2020-04-12 leetcode 153. Find Minimum in Rotated Sorted Array 简洁二分法

class Solution {

    public int findMin(int[] nums) {

        int l = 0, r = nums.length - 1;

        while (l + 1 < r) {

            int mid = l + ((r - l) / 2);

            // System.out.println("l: " + l + " r: " + r + " mid: " + mid);

            if (nums[l] < nums[r]) return nums[l];

            else { // nums[l] >= nums[r]

                if (nums[l] < nums[mid]) { // mid及其之前的元素都>=nums[l]>=nums[r],所以都可排除

                    l = mid + 1;

                } else { // mid是右班部分,所以最小是肯定在mid及其左边

                    r = mid;

                }

            }

        }

        return nums[l] < nums[r] ? nums[l] : nums[r];

    }

}

你可能感兴趣的:(2020-04-12 leetcode 153. Find Minimum in Rotated Sorted Array 简洁二分法)