154. 寻找旋转排序数组中的最小值 II

class Solution {
public:
int findMin(vector<int>& nums, int left, int right) {
if(left > right) return INT_MAX;
if(left == right || nums[left] < nums[right]) return nums[left];
int mid = (left + right) >> 1;
if(nums[left] == nums[right]) return findMin(nums, left + 1, right);
if(nums[left] <= nums[mid]) return min(nums[mid], findMin(nums, mid + 1, right));
return min(nums[mid], findMin(nums, left, mid - 1));
}
int findMin(vector<int>& nums) {
return findMin(nums, 0, nums.size() - 1);
}
};

class Solution {
public:
int findMin(vector<int>& nums) {
int min_val = nums[0];
for(auto num : nums) min_val = min(min_val, num);
return min_val;
}
};