Skip to content

Commit b22c9ea

Browse files
committed
feat: add find minimum in rotated sorted array
1 parent cffba1a commit b22c9ea

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from typing import List
2+
3+
4+
class Solution:
5+
def findMin(self, nums: List[int]) -> int:
6+
"""
7+
- Idea: ํšŒ์ „๋œ ์ •๋ ฌ ๋ฐฐ์—ด์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด ๋‘ ๊ฐœ์˜ ํฌ์ธํ„ฐ, left, right๋ฅผ ์ด์šฉํ•œ๋‹ค.
8+
๋‘ ๊ฐœ์˜ ํฌ์ธํ„ฐ๋Š” ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ฐฐ์—ด์—์„œ ํƒ์ƒ‰ํ•  ๋ฒ”์œ„๋ฅผ ์ค„์—ฌ๊ฐ€๋Š”๋ฐ ํ™œ์šฉ๋œ๋‹ค.
9+
- Time Complexity: O(logn). n์€ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ์ด๋‹ค.
10+
๋งค๋ฒˆ ๋ฐฐ์—ด์„ ์ ˆ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ ์„œ ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ค„์ด๊ธฐ ๋•Œ๋ฌธ์— O(logn) ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค.
11+
- Space Complexity: O(1). ๋ฐฐ์—ด์˜ ํฌ๊ธฐ์™€ ์ƒ๊ด€์—†์ด left, right, mid ๋ณ€์ˆ˜๋งŒ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ
12+
์ƒ์ˆ˜ ๊ณต๊ฐ„๋งŒ ์ฐจ์ง€ํ•œ๋‹ค.
13+
"""
14+
left, right = 0, len(nums) - 1
15+
16+
while left < right:
17+
mid = (left + right) // 2
18+
19+
if nums[right] < nums[mid]:
20+
left = mid + 1
21+
else:
22+
right = mid
23+
24+
return nums[left]

0 commit comments

Comments
ย (0)