# 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];
}
};