Skip to content

Commit edb8398

Browse files
committed
solve: find minimum in rotated sorted array
1 parent 659bf6e commit edb8398

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/**
2+
* TC: O(log N)
3+
* 이진탐색으로 log N으로 계산
4+
*
5+
* SC: O(1)
6+
*/
7+
8+
/**
9+
* @param {number[]} nums
10+
* @return {number}
11+
*/
12+
var findMin = function (nums) {
13+
let left = 0;
14+
let right = nums.length - 1;
15+
16+
// case1: v_left <= v_center < v_right => return left
17+
// case2: v_right < v_left <= v_center => left = center
18+
// case3: v_center < v_right < v_left => right = center
19+
20+
while (left < right) {
21+
const center = Math.floor((left + right) / 2);
22+
23+
if (nums[left] <= nums[center] && nums[center] < nums[right]) {
24+
return nums[left];
25+
}
26+
if (nums[right] < nums[left] && nums[left] <= nums[center]) {
27+
left = center + 1;
28+
continue;
29+
}
30+
if (nums[center] < nums[right] && nums[right] < nums[left]) {
31+
right = center;
32+
continue;
33+
}
34+
}
35+
36+
return nums[left];
37+
};

0 commit comments

Comments
 (0)