LeetCode 153. Find Minimum in Rotated Sorted Array

也就是要将两个指针逐步向中间逼近,找到那个临界点(就是左边大,右边小的left和right),然后返回right。

public static int findMin2(int[] nums){
        int left=0;
        int right=nums.length;
        int mid=0;
        while (nums[left]>=nums[right]){
            if (left==right){
                break;
            }
            if (right-left==1){
                return nums[right];
            }
            mid=(left+right)/2;
            if (nums[mid]>nums[left]){
                left=mid;
            }else {
                right=mid;
            }

        }
        return nums[0];
    }

 这个解法的复杂度:O(nlogn).

 

还有个O(n)的解法:

   public int findMin(int[] nums) {
        if(nums.length==0)
            return 0;
        for(int i=1;i<nums.length;++i){
        if(nums[i]<nums[i-1]){
            return nums[i];
        }
    }
    return nums[0];
    }

 

posted @ 2018-08-02 11:12  Volvane  阅读(134)  评论(0编辑  收藏  举报
回顶部
//回顶部