Skip to content

Commit 034a387

Browse files
committed
solve: Find Minimum in Rotated Sorted Array
1 parent 85687e8 commit 034a387

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
"""
2+
Constraints:
3+
- n == nums.length
4+
- 1 <= n <= 5000
5+
- -5000 <= nums[i] <= 5000
6+
- All the integers of nums are unique.
7+
- nums is sorted and rotated between 1 and n times.
8+
9+
Time Complexity: O(log n)
10+
- ์ด์ง„ ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋งค ๋‹จ๊ณ„๋งˆ๋‹ค ํƒ์ƒ‰ ๋ฒ”์œ„๊ฐ€ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์–ด๋“ฆ
11+
12+
Space Complexity: O(1)
13+
- ์ถ”๊ฐ€ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํฌ์ธํ„ฐ๋งŒ ์‚ฌ์šฉ
14+
15+
ํ’€์ด๋ฐฉ๋ฒ•:
16+
1. ์ด์ง„ ํƒ์ƒ‰(Binary Search) ํ™œ์šฉ
17+
2. mid์™€ right ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ์กฐ๊ฑด์„ ๋‚˜๋ˆ”
18+
- Case 1: nums[mid] > nums[right]
19+
- ์˜ค๋ฅธ์ชฝ ๋ถ€๋ถ„์ด ์ •๋ ฌ๋˜์–ด ์žˆ์ง€ ์•Š์Œ
20+
- ์ตœ์†Ÿ๊ฐ’์€ mid ์˜ค๋ฅธ์ชฝ์— ์กด์žฌ
21+
- left = mid + 1
22+
- Case 2: nums[mid] <= nums[right]
23+
- mid๋ถ€ํ„ฐ right๊นŒ์ง€๋Š” ์ •๋ ฌ๋˜์–ด ์žˆ์Œ
24+
- ์ตœ์†Ÿ๊ฐ’์€ mid๋ฅผ ํฌํ•จํ•œ ์™ผ์ชฝ์— ์กด์žฌ ๊ฐ€๋Šฅ
25+
- right = mid
26+
"""
27+
28+
class Solution:
29+
def findMin(self, nums: List[int]) -> int:
30+
left = 0
31+
right = len(nums) - 1
32+
33+
while left < right:
34+
mid = (left + right) // 2
35+
36+
if nums[mid] > nums[right]:
37+
left = mid + 1
38+
39+
else:
40+
right = mid
41+
42+
return nums[left]

0 commit comments

Comments
ย (0)