Skip to content

Commit 350e8c0

Browse files
Jeehay28Jeehay28
authored andcommitted
Add search-in-rotated-sorted-array solution in TS
1 parent 0e7ebfe commit 350e8c0

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
// TC: O(log n)
2+
// SC: O(1)
3+
function search(nums: number[], target: number): number {
4+
let left = 0;
5+
let right = nums.length - 1;
6+
7+
while (left <= right) {
8+
const mid = Math.floor((left + right) / 2);
9+
10+
if (nums[mid] === target) return mid;
11+
12+
if (nums[left] <= nums[mid]) {
13+
// Left half is sorted
14+
if (nums[left] <= target && target < nums[mid]) {
15+
right = mid - 1;
16+
} else {
17+
left = mid + 1;
18+
}
19+
} else {
20+
// Right half is sorted
21+
if (nums[mid] < target && target <= nums[right]) {
22+
left = mid + 1;
23+
} else {
24+
right = mid - 1;
25+
}
26+
}
27+
}
28+
29+
return -1;
30+
}
31+
32+
// TC: O(log n)
33+
// SC: O(1)
34+
// function search(nums: number[], target: number): number {
35+
// const findPivot = (nums: number[]) => {
36+
// let left = 0;
37+
// let right = nums.length - 1;
38+
39+
// while (left <= right) {
40+
// const mid = Math.floor((left + right) / 2);
41+
// if (mid > 0 && nums[mid - 1] > nums[mid]) return mid;
42+
// if (nums[0] <= nums[mid]) {
43+
// left = mid + 1;
44+
// } else {
45+
// right = mid - 1;
46+
// }
47+
// }
48+
// return 0;
49+
// };
50+
51+
// const binarySearch = (left: number, right: number) => {
52+
// while (left <= right) {
53+
// const mid = Math.floor((left + right) / 2);
54+
// if (nums[mid] === target) return mid;
55+
// if (nums[mid] < target) {
56+
// left = mid + 1;
57+
// } else {
58+
// right = mid - 1;
59+
// }
60+
// }
61+
// return -1;
62+
// };
63+
64+
// const pivot = findPivot(nums);
65+
// return Math.max(
66+
// binarySearch(0, pivot - 1),
67+
// binarySearch(pivot, nums.length - 1)
68+
// );
69+
// }

0 commit comments

Comments
 (0)