Skip to content

Commit 441ac50

Browse files
committed
153. Find Minimum in Rotated Sorted Array
1 parent ea4170f commit 441ac50

1 file changed

Lines changed: 32 additions & 0 deletions

File tree

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# [๋ฌธ์ œ ๋ถ„์„]
2+
# nums: ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ, ์ •์ˆ˜ ๋ฐฐ์—ด, ์ค‘๋ณต ์—†์Œ
3+
# ๋ฐฐ์—ด์—์„œ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ฅผ ์ฐพ์•„ ๋ฐ˜ํ™˜
4+
# ์กฐ๊ฑด: O(log n)์œผ๋กœ ์ž‘์„ฑํ•  ๊ฒƒ
5+
6+
# [์ ‘๊ทผ๋ฒ•]
7+
# ์ •๋ ฌ๋œ ๋ฐฐ์—ด์ด ์ฃผ์–ด์ง€๊ณ , ๋ฐฐ์—ด์ด n๋ฒˆ ํšŒ์ „ํ•œ๋‹ค. ์ถ”์„ธ๊ฐ€ ๊บพ์ด๋Š” ๋ถ€๋ถ„์„ ์ฐพ์•„ ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ขํžŒ๋‹ค.
8+
# ๋ฐฐ์—ด์ด ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค๋Š” ์กฐ๊ฑด์ด ์žˆ์œผ๋ฏ€๋กœ ์ด์ง„ ํƒ์ƒ‰์„ ํ†ตํ•ด ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ขํ˜€ log n์œผ๋กœ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
9+
10+
# [๋ณต์žก๋„]
11+
# ์‹œ๊ฐ„ ๋ณต์žก๋„: O(log n), ์ด์ง„ ํƒ์ƒ‰์„ ํ•˜๋ฏ€๋กœ log n
12+
# ๊ณต๊ฐ„ ๋ณต์žก๋„: O(1)
13+
class Solution:
14+
def findMin(self, nums: List[int]) -> int:
15+
16+
# ์™ผ์ชฝ/์˜ค๋ฅธ์ชฝ ๊ฐ’์˜ ์ธ๋ฑ์Šค ๊ณ„์‚ฐ
17+
left = 0
18+
right = len(nums) - 1
19+
20+
while left < right:
21+
# ์ค‘๊ฐ„๊ฐ’ ์ธ๋ฑ์Šค
22+
mid = (left + right) // 2
23+
24+
# ์ค‘๊ฐ„๊ฐ’๊ณผ ์˜ค๋ฅธ์ชฝ ๊ฐ’์„ ๋น„๊ตํ•ด ์ถ”์„ธ๊ฐ€ ๊บพ์ด๋Š”์ง€ ๋น„๊ต
25+
if nums[mid] > nums[right]:
26+
# ์ถ”์„ธ ์•ˆ ๊บพ์ž„, ์‹œ์ž‘์ ์„ ์ค‘๊ฐ„๊ฐ’ ์ธ๋ฑ์Šค ๋ฐ”๋กœ ๋‹ค์Œ์œผ๋กœ ์˜ฎ๊ธด๋‹ค
27+
left = mid + 1
28+
else:
29+
# ์ถ”์„ธ ๊บพ์ž„, ์ข…๋ฃŒ์ง€์ ์„ ์ค‘๊ฐ„๊ฐ’ ์ธ๋ฑ์Šค๋กœ ์˜ฎ๊ฒจ์ค€๋‹ค
30+
right = mid
31+
32+
return nums[left]

0 commit comments

Comments
ย (0)