# 153. Find Minimum in Rotated Sorted Array

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.

Example 1:

Input: [3,4,5,1,2] 
Output: 1

Example 2:

Input: [4,5,6,7,0,1,2]
Output: 0

# Solution

Approach 1: binary search.

# Code (Python)

Approach 1:

class Solution:
    def findMin(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        left, right = 0, len(nums) - 1
        while left < right:
            if nums[left] < nums[right]:
                return nums[left]
            mid = (left + right) // 2
            if nums[mid] > nums[right]:
                left = mid + 1
            else:
                right = mid
        return nums[left]

# Code (C++)

Approach 1:

class Solution {
public:
    int findMin(vector<int>& nums) {
        int head = 0;
        int tail = nums.size() - 1;
        while (head < tail)
        {
            if (nums[head] < nums[tail])
                return nums[head];
            int mid = head + (tail - head) / 2;
            if (nums[mid] < nums[tail])
                tail = mid;
            else
                head = mid + 1;
        }
        return nums[head];
    }
};