Skip to content

Commit 9b3c728

Browse files
committed
Add search-in-rotated-sorted-array solution
1 parent 1665715 commit 9b3c728

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
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+

0 commit comments

Comments
 (0)