Skip to content

Commit 91e86a9

Browse files
committed
find-minimum-in-rotated-sorted-array (ts, py)
1 parent f50a050 commit 91e86a9

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# 회전된 오름차순 배열에서 최소값을 이진 탐색으로 찾아라
2+
3+
# O(N) time, O(1) space -> 시간 복잡도 충족 x
4+
class Solution:
5+
def findMin(self, nums: List[int]) -> int:
6+
for i in range(1, len(nums)):
7+
if nums[i - 1] > nums[i]:
8+
return nums[i]
9+
return nums[0]
10+
11+
12+
class Solution:
13+
14+
15+
# 이진 탐색 풀이
16+
# O(log n) time, O(1) space
17+
class Solution:
18+
def findMin(self, nums: List[int]) -> int:
19+
low, high = 1, len(nums) - 1
20+
while low <= high:
21+
mid = (low + high) // 2
22+
if nums[mid - 1] > nums[mid]:
23+
return nums[mid]
24+
if nums[0] < nums[mid]:
25+
low = mid + 1
26+
else:
27+
high = mid - 1
28+
return nums[0]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
function findMin(nums: number[]): number {
2+
let low = 0,
3+
high = nums.length - 1;
4+
5+
while (low <= high) {
6+
let mid = Math.floor((low + high) / 2);
7+
if (nums[mid - 1] > nums[mid]) {
8+
return nums[mid]; // 회전이 일어난 곳
9+
}
10+
if (nums[0] < nums[mid]) {
11+
low = mid + 1; // 왼쪽은 이미 정렬되어 있어, 오른쪽으로 이동
12+
} else {
13+
high = mid - 1; // 왼쪽으로 이동
14+
}
15+
}
16+
return nums[0];
17+
}

0 commit comments

Comments
 (0)