publicclassSolution { /** * @param nums: a rotated sorted array * @return: the minimum number in the array */publicintfindMin(int[] nums) {if (nums ==null||nums.length==0) {return-1; }int left =0, right =nums.length-1;int target = nums[nums.length-1];while (left +1< right) {int mid = left + (right - left) /2;if (nums[mid] >= target) { left = mid; } else { right = mid; } }returnMath.min(nums[left], nums[right]); }}
Notes
We use the last element as the target since we lack a target for the binary search. The reason is that we can reduce the range that contains the minimum number using this target.
Also, note that the array may not be rotated at all.