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
Lines changed: 28 additions & 0 deletions
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]
Lines changed: 17 additions & 0 deletions
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)