您的位置:首页 > 其它

Leetcode 33. Search in Rotated Sorted Array

2016-12-27 02:03 387 查看
Using the find minimum discussed in
Leetcode 153. Find Minimum in Rotated Sorted Array. 

After found the minimum, apply binary search on the sorted array. 

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
int start = 0, end = nums.length-1, mid = 0;

imin = searchMin(nums);
if (target <= nums[nums.length-1]) return binarySearch(nums, imin, nums.length-1, target);
return binarySearch(nums, 0, imin-1, target);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: