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

假设一个排好序的数组在其某一未知点发生了旋转(比如0 1 2 4 5 6 7 可能变成4 5 6 7 0 1 2)。你需要找到其中最小的元素。

样例
Example 1:

输入:[4, 5, 6, 7, 0, 1, 2]
输出:0
解释:
数组中的最小值为0
Example 2:

输入:[2,1]
输出:1
解释:
数组中的最小值为1
注意事项
你可以假设数组中不存在重复元素。

Accepted
由 LintCode领扣极速闪测 强力驱动
100%
100% 数据通过测试总耗时 207 ms
您的提交打败了 88.60% 的提交!

public class Solution {
    /**
     * @param nums: a rotated sorted array
     * @return: the minimum number in the array
     */
    public int findMin(int[] nums) {
        // write your code here
        if (nums.length < 1){
            return 0;
        }
        int low = 0;
        int high = nums.length-1;
        int target = nums[high];
        while(low +1< high){
            int mid = (low+high)/2;
            if (nums[mid] >  target){
                low = mid;
            }else{
                high= mid;
            }
        }
        return Math.min(nums[low],nums[high]);
    }
}

你可能感兴趣的:(LintCode,LeetCode日常刷题)