File tree 1 file changed +44
-0
lines changed
search-in-rotated-sorted-array 1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments