Skip to content

Commit e6f0fde

Browse files
committed
Implrove find rotated index solution to O(log n)
1 parent 7317c94 commit e6f0fde

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

Divide and Conquer/findRotatedIndex.js

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,7 @@
1717

1818
function findRotatedIndex(arr, num) {
1919
let index;
20-
let pivot;
21-
22-
// find pivot
23-
for (let i = 0; i < arr.length - 1; i++) {
24-
if (arr[i] > arr[i + 1]) pivot = i;
25-
}
20+
let pivot = findPivot(arr, 0, arr.length - 1); // find pivot
2621

2722
function helper(start, end) {
2823
if (index) return;
@@ -41,3 +36,16 @@ function findRotatedIndex(arr, num) {
4136

4237
return index ? index : -1;
4338
}
39+
40+
function findPivot(arr, start, end) {
41+
if (start > end) return -1;
42+
else if (start === end) return start;
43+
44+
let mid = Math.floor((start + end) / 2);
45+
46+
if (arr[mid] > arr[end]) {
47+
return findPivot(arr, mid + 1, end);
48+
} else {
49+
return findPivot(arr, start, mid);
50+
}
51+
}

0 commit comments

Comments
 (0)