- Notifications
You must be signed in to change notification settings - Fork 47
/
Copy path33.search-in-rotated-sorted-array.java
36 lines (33 loc) · 956 Bytes
/
33.search-in-rotated-sorted-array.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 id=33 lang=java
*
* [33] Search in Rotated Sorted Array
*/
classSolution {
publicintsearch(int[] nums, inttarget) {
returnbsearch(nums, target, 0, nums.length - 1);
}
publicintbsearch(int[] nums, inttarget, intlow, inthigh) {
if (low > high) return -1;
intmid = low + ((high - low) >> 1);
if (nums[mid] == target) {
returnmid;
} elseif (nums[low] == target) {
returnlow;
} elseif (nums[high] == target) {
returnhigh;
} elseif (nums[low] < nums[mid]) {
if (nums[low] < target && target < nums[mid]) {
returnbsearch(nums, target, low + 1, mid - 1);
} else {
returnbsearch(nums, target, mid + 1, high - 1);
}
} else {
if (nums[mid] < target && target < nums[high]) {
returnbsearch(nums, target, mid + 1, high - 1);
} else {
returnbsearch(nums, target, low + 1, mid - 1);
}
}
}
}