[LeetCode 33] Search in rotated
2019-05-22 本文已影响0人
灰睛眼蓝
class Solution {
public int search(int[] nums, int target) {
if (nums == null || nums.length == 0) {
return -1;
}
int start = 0;
int end = nums.length - 1;
while (start + 1 < end) {
int middle = start + (end - start) / 2;
if (nums [middle] == target)
return middle;
// [start - middle]: ascending order
if (nums[start] < nums [middle]) {
if (nums [start] <= target && target <= nums [middle]) {
end = middle;
} else {
start = middle;
}
} else { // [middle - end]: ascending order
if (nums [middle] <= target && target <= nums [end]) {
start = middle;
} else {
end = middle;
}
}
}
if (nums [start] == target)
return start;
if (nums [end] == target)
return end;
return -1;
}
}