File tree Expand file tree Collapse file tree 1 file changed +45
-0
lines changed
search-in-rotated-sorted-array Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } nums
3
+ * @param {number } target
4
+ * @return {number }
5
+ */
6
+
7
+ // ✅ Iterative Binary Search for Rotated Sorted Array
8
+ // Time Complexity: O(log N)
9
+ // Space Complexity: O(1)
10
+ var search = function ( nums , target ) {
11
+ let left = 0 ;
12
+ let right = nums . length - 1 ;
13
+
14
+ while ( left <= right ) {
15
+ let pointer = Math . floor ( ( left + right ) / 2 ) ;
16
+
17
+ if ( nums [ pointer ] === target ) {
18
+ return pointer ;
19
+ }
20
+
21
+ // Check if the left half is sorted
22
+ if ( nums [ left ] <= nums [ pointer ] ) {
23
+ // Target is in the sorted left half
24
+ if ( nums [ left ] <= target && target < nums [ pointer ] ) {
25
+ right = pointer - 1 ;
26
+ } else {
27
+ // Target is not in the left half, so search in the right half
28
+ left = pointer + 1 ;
29
+ }
30
+ } else {
31
+ // The right half must be sorted
32
+
33
+ // Target is in the sorted right half
34
+ if ( nums [ pointer ] < target && target <= nums [ right ] ) {
35
+ left = pointer + 1 ;
36
+ } else {
37
+ // Target is not in the right half, so search in the left half
38
+ right = pointer - 1 ;
39
+ }
40
+ }
41
+ }
42
+
43
+ return - 1 ;
44
+ } ;
45
+
You can’t perform that action at this time.
0 commit comments