天天看點

153. Find Minimum in Rotated Sorted Array153. Find Minimum in Rotated Sorted Array題目思路代碼

153. Find Minimum in Rotated Sorted Array

标簽(空格分隔): leetcode array medium

題目

Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.

(i.e.,

0 1 2 4 5 6 7

might become

4 5 6 7 0 1 2

).

Find the minimum element.

You may assume no duplicate exists in the array.

思路

本題考察的是二分搜尋,這裡需要建立兩個中間變量middle1,middle2,代碼很好了解。

代碼

class Solution {
public:
    int findMin(vector<int>& nums) {
        int l=,r=nums.size()-,middle1,middle2;
        //判斷隻有一個元素的情況
        if(r==)
            return nums[];
            //判斷沒有發生反轉的情況
        if(nums[r]>nums[l])
            return nums[l];
        while(l<r)
        {
            middle1 =(l+r)/;
            middle2 =(l+r)/ +;
            if(nums[middle1]<nums[middle2]){
            //判斷l,r更新的值
                if(nums[middle1]>nums[])
                    l=middle2;
                else
                    r=middle1;
            }
            if(nums[middle1]>nums[middle2])
            {
                return nums[middle2];
            }

        }
        return nums[l];    
    }
};