File tree Expand file tree Collapse file tree
search-in-rotated-sorted-array Expand file tree Collapse file tree 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