lo = 0, hi = n − 1; while lo < hi: if nums[mid] > nums[hi], lo = mid + 1; else hi = mid. Return nums[lo].
Approach 1
class Solution {
public int findMin(int[] nums) {
int lo = 0, hi = nums.length - 1;
while (lo < hi) {
int mid = lo + (hi - lo) / 2;
if (nums[mid] > nums[hi]) lo = mid + 1;
else hi = mid;
}
return nums[lo];
}
}
Verdict: Works for rotated and non-rotated arrays.
Before you submit
Edge cases and common mistakes
Test these inputs
Not rotated
One element
Minimum at the last index
Mistakes people make
Comparing with nums[lo] (ambiguous for a non-rotated array).