#include #include using namespace std; int findMin(vector& nums) { int left = 0; int right = nums.size() - 1; while (left < right) { int mid = left + (right - left) / 2; if (nums[mid] > nums[right]) { // right half is sorted, search in left half left = mid + 1; } else if (nums[mid] < nums[left]) { // left half is sorted, search in right half right = mid; } else { // can't determine which half is sorted, perform linear search int min_val = nums[left]; for (int i = left + 1; i <= right; i++) { min_val = min(min_val, nums[i]); } return min_val; } } return nums[left]; } int main() { vector nums1 = {1, 3, 5}; cout << findMin(nums1) << endl; // Output: 1 vector nums2 = {2, 2, 2, 0, 1}; cout << findMin(nums2) << endl; // Output: 0 return 0; }