public class Solution {
// find the index of the minimum
public int searchMin (int[] nums) {
int low = 0, high = nums.length-1, mid = 0;
while (low < high) {
mid = (low+high)/2;
if (nums[mid] > nums[high]) low = mid + 1;
else high = mid;
}
return low;
}
// binary search for sorted array
public int binarySearch (int[] nums, int low, int high, int target) {
int mid = 0;
while (low < high) {
mid = (low+high)/2;
if (nums[mid] < target) low = mid+1;
else high = mid;
}
return (nums[low] == target) ? low : -1;
}
public int search(int[] nums, int target) {
if (nums.length == 0) return -1;
int imin = 0; // index of the minimum value
imin = searchMin(nums);
if (target <= nums[nums.length-1]) return binarySearch(nums, imin, nums.length-1, target);
return binarySearch(nums, 0, imin-1, target);
}
}
Leetcode 33. Search in Rotated Sorted Array
最新推荐文章于 2023-12-29 18:00:11 发布