Skip to content

Commit e5c7d84

Browse files
authored
Merge pull request #524 from mangodm-web/main
[mangodm-web] Week 09 Solutions
2 parents 9a8decb + b22c9ea commit e5c7d84

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-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]
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
from typing import Optional
2+
3+
4+
# Definition for singly-linked list.
5+
class ListNode:
6+
def __init__(self, x: int) -> None:
7+
self.val = x
8+
self.next = None
9+
10+
11+
class Solution:
12+
def hasCycle(self, head: Optional[ListNode]) -> bool:
13+
"""
14+
- Idea: ์‚ฌ์ดํด์ด ์žˆ๋Š” ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์ธ์ง€ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ๊ฐœ์˜ ํฌ์ธํ„ฐ, slow์™€ fast๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
15+
slow ํฌ์ธํ„ฐ๋Š” ํ•œ๋ฒˆ์— ํ•œ ์นธ์”ฉ, fast ํฌ์ธํ„ฐ๋Š” ํ•œ๋ฒˆ์— ๋‘ ์นธ์”ฉ ์ด๋™ํ•œ๋‹ค.
16+
๋งŒ์•ฝ ๋‘ ํฌ์ธํ„ฐ๊ฐ€ ๋งŒ๋‚˜๋ฉด, ๋ฆฌ์ŠคํŠธ์— ์‚ฌ์ดํด์ด ์กด์žฌํ•œ๋‹ค๊ณ  ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค.
17+
fast๊ฐ€ ๋ฆฌ์ŠคํŠธ์˜ ๋์— ๋„๋‹ฌํ•œ๋‹ค๋ฉด ์‚ฌ์ดํด์ด ์—†๋‹ค๊ณ  ํŒ๋‹จํ•œ๋‹ค.
18+
- Time Complexity: O(n). n์€ ๋ฆฌ์ŠคํŠธ์— ํฌํ•จ๋œ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๋‹ค.
19+
์‚ฌ์ดํด์ด ์—†๋Š” ๊ฒฝ์šฐ, fast ํฌ์ธํ„ฐ๋Š” ๋ฆฌ์ŠคํŠธ ๋๊นŒ์ง€ ์ด๋™ํ•œ๋‹ค.
20+
์‚ฌ์ดํด์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ๋‘ ํฌ์ธํ„ฐ๊ฐ€ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ์ด๋™ํ•˜๋ฏ€๋กœ O(n)์˜ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค.
21+
- Space Complexity: O(1). ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ์™€ ์ƒ๊ด€์—†์ด slow์™€ fast ๋ณ€์ˆ˜๋งŒ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ
22+
์ƒ์ˆ˜ ๊ณต๊ฐ„๋งŒ ์ฐจ์ง€ํ•œ๋‹ค.
23+
"""
24+
slow, fast = head, head
25+
26+
while fast and fast.next:
27+
slow = slow.next
28+
fast = fast.next.next
29+
30+
if slow == fast:
31+
return True
32+
33+
return False

0 commit comments

Comments
ย (0)