-
Notifications
You must be signed in to change notification settings - Fork 0
/
33.搜索旋转排序数组.java
36 lines (34 loc) · 953 Bytes
/
33.搜索旋转排序数组.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*
* @lc app=leetcode.cn id=33 lang=java
*
* [33] 搜索旋转排序数组
*/
// @lc code=start
class Solution {
// 只可能有一半乱序
public int search(int[] nums, int target) {
if (nums == null) {return -1;}
int start = 0, end = nums.length - 1;
while (start <= end) { // 二分查找出口
int mid = (start + end) / 2;
if (nums[mid] == target) {
return mid;
}
if (nums[start] <= nums[mid]) {
if (nums[start] <= target && target < nums[mid]) {
end = mid - 1;
} else {
start = mid + 1;
}
} else {
if (nums[mid] < target && target <= nums[end]) {
start = mid + 1;
} else {
end = mid - 1;
}
}
}
return -1;
}
}
// @lc code=end