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;
int mid;
while (start <= end) {
mid = start + (end - start) / 2;
if (nums[mid] == target) {
return mid;
}
// 如果nums[start]<=nums[mid]说明前半部分是有序的
if (nums[start] <= nums[mid]) {
if (target >= nums[start] && target < nums[mid]) {
end = mid - 1;
} else {
start = mid + 1;
}
} else { // 说明后半部分是有序的
if (target <= nums[end] && target > nums[mid]) {
start = mid + 1;
} else {
end = mid - 1;
}
}
}
return -1;
}
}
相关文章
- 11-13【LeetCode】【算法】33. 搜索旋转排序数组-代码
- 11-13面试算法-79-搜索旋转排序数组-题目
- 11-13leetcode33.搜索旋转排序数组(中等)
- 11-13二分查找(通过相对位置判断区间位置)--17--二分--LeetCode33搜索旋转排序数组
- 11-13leetcode33 搜索旋转排序数组
- 11-13LeetCode33. 搜索旋转排序数组
- 11-13leetcode------------搜索旋转排序数组
- 11-13[LeetCode] 33. Search in Rotated Sorted Array(搜索旋转有序数组)
- 11-13LeetCode33—搜索旋转排序数组
- 11-13leetcode 81 搜索旋转排序数组 II