Skip to content

Files

Latest commit

 

History

History
43 lines (40 loc) · 1002 Bytes

Find Minimum in Rotated Sorted Array.md

File metadata and controls

43 lines (40 loc) · 1002 Bytes

#Find Minimum in Rotated Sorted Array ##Problem: Suppose a sorted array 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. ##Idea: 1.check from begin to end

class Solution {
public:
    int findMin(vector<int>& nums) {
        if(nums[0]<=nums.back()) return nums[0];
        for(int i=1;i<nums.size();i++)
        {
            if(nums[i]<nums[i-1]) return nums[i];
        }
    }
};

Time Complexity:O(n)
2.Binary Search

class Solution {
public:
    int findMin(vector<int>& nums) {
        int left=0;
        int right=(int)nums.size()-1;
        while(left<right)
        {
            if(nums[left]<nums[right]) return nums[left];
            int mid=(left+right)/2;
            if(nums[left]<=nums[mid]) left=mid+1;//Don't forget '=' in '<='
            else right=mid;
        }
        return nums[left];
    }
};

Time Complexity:O(logn)