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