Skip to content

Commit 4db2ab0

Browse files
committed
DaleStudy#246 Search in Rotated Sorted Array
1 parent 1ce3d5d commit 4db2ab0

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
# Time Complexity : O(nlogn)
3+
# Space Complexity : O(1)
4+
*/
5+
6+
class Solution {
7+
public int search(int[] nums, int target) {
8+
if (nums[0] == target) return 0;
9+
boolean prev;
10+
if (nums[0] < target) prev = true;
11+
else prev = false;
12+
13+
int l, r, m, pivot = nums.length - 1;
14+
l = 0;
15+
r = nums.length - 1;
16+
while (l <= r) {
17+
m = (r - l) / 2 + l;
18+
if (m == nums.length - 1 || nums[m] > nums[m + 1]) {
19+
pivot = m;
20+
break;
21+
} else if (nums[0] <= nums[m]) {
22+
l = m + 1;
23+
} else {
24+
r = m - 1;
25+
}
26+
}
27+
28+
if (prev) {
29+
l = 0;
30+
r = pivot;
31+
} else {
32+
l = pivot + 1;
33+
r = nums.length - 1;
34+
}
35+
36+
while (l <= r) {
37+
m = (r - l) / 2 + l;
38+
if (nums[m] == target) return m;
39+
else if (nums[m] < target) l = m + 1;
40+
else r = m - 1;
41+
}
42+
return -1;
43+
}
44+
}

0 commit comments

Comments
 (0)