classSolution { private: boolisLowest(vector<int> &nums, int index) { int n = nums.size(); if (index > 0 && nums[index] < nums[index - 1]) { returntrue; } elseif (index == 0 && nums[index] < nums[n - 1]) { returntrue; } returnfalse; }
public: intfindMin(vector<int> &nums) { int n = nums.size(); int left = 0, right = n - 1; int mid; while (left <= right) { mid = left + (right - left) / 2; if (isLowest(nums, mid)) { return nums[mid]; } if (nums[mid] > nums[right]) { left = mid + 1;
classSolution { public: intfindMin(vector<int> &nums) { // n == nums.length // 1 <= n <= 5000 // -5000 <= nums[i] <= 5000 // All integers in nums are unique. // nums was originally sorted in ascending order and rotated between 1 and n times.
int n = nums.size(); int left = 0, right = n - 1, mid = 0;
if (nums[0] <= nums[n - 1]) // Rotated n times. return nums[0];
while (left <= right) { mid = left + (right - left) / 2;