Skip to content

Commit f0b4b5e

Browse files
authored
Merge pull request #996 from Chaedie/main
[Chaedie] Week 9
2 parents e9cc8ac + a33f733 commit f0b4b5e

File tree

4 files changed

+134
-0
lines changed

4 files changed

+134
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
"""
2+
Solution:
3+
1) ์ˆœํšŒํ•˜๋ฉฐ ์ด์ „ ๊ฐ’์ด ํ˜„์žฌ ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด ํ˜„์žฌ ๊ฐ’์ด ์ตœ์†Œ๊ฐ’์ด๋‹ค.
4+
2) ๋๊นŒ์ง€ ๋Œ์•„๋„ ์ตœ์†Œ๊ฐ’์ด ์—†์„ ๊ฒฝ์šฐ ์ฒซ๋ฒˆ์จฐ ๊ฐ’์ด ์ตœ์†Œ๊ฐ’์ด๋‹ค.
5+
Time: O(n)
6+
Space: O(1)
7+
"""
8+
9+
10+
class Solution:
11+
def findMin(self, nums: List[int]) -> int:
12+
for i in range(1, len(nums)):
13+
if nums[i - 1] >= nums[i]:
14+
return nums[i]
15+
16+
return nums[0]
17+
18+
"""
19+
Solution:
20+
์‹œ๊ฐ„ ๋ณต์žก๋„ O(log n)์œผ๋กœ ํ’€๊ธฐ ์œ„ํ•ด binary search ์‚ฌ์šฉ
21+
Time: O(log n)
22+
Space: O(1)
23+
"""
24+
25+
def findMin(self, nums: List[int]) -> int:
26+
l, r = 1, len(nums) - 1
27+
28+
while l <= r:
29+
mid = (l + r) // 2
30+
# prev ๊ฐ’๋ณด๋‹ค mid ๊ฐ€ ์ž‘์œผ๋ฉด ์ฐพ๋˜ ๊ฐ’
31+
if nums[mid - 1] > nums[mid]:
32+
return nums[mid]
33+
# mid ๊นŒ์ง€ ์ •์ƒ ์ˆœ์„œ๋ฉด ์šฐ์ธก ํƒ์ƒ‰
34+
if nums[0] < nums[mid]:
35+
l = mid + 1
36+
# mid ๊นŒ์ง€ ๋น„ ์ •์ƒ ์ˆœ์„œ๋ฉด ์ขŒ์ธก ํƒ์ƒ‰
37+
else:
38+
r = mid - 1
39+
# ๋ชป์ฐพ์„ ๊ฒฝ์šฐ ์ „์ฒด ์ •์ƒ ์ˆœ์„œ ์ผ€์ด์Šค
40+
return nums[0]
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
"""
2+
Solution:
3+
1) ์‚ฌ์ดํด์ด ์žˆ๋‹ค๋ฉด ๋ฌดํ•œ ๋ฃจํ”„๊ฐ€ ๋ฐœ์ƒํ• ๊ฒƒ์ด๋‹ค.
4+
2) ์‚ฌ์ดํด์ด ์—†๋‹ค๋ฉด ์–ธ์  ๊ฐ€ null ์ด ๋ ๊ฒƒ์ด๋‹ค.
5+
3) ๋”ฐ๋ผ์„œ ๋‘๊ฐœ์˜ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ Node์— ๋„๋‹ฌํ•˜๋Š” ์ง€ ํ™•์ธํ•œ๋‹ค.
6+
4) null ์ด ๋œ๋‹ค๋ฉด ์‚ฌ์ดํด์ด ์—†๋‹ค๋Š” ๋œป์ด๋‹ค.
7+
Time: O(n)
8+
Space: O(1)
9+
"""
10+
11+
12+
class Solution:
13+
def hasCycle(self, head: Optional[ListNode]) -> bool:
14+
if not head or not head.next:
15+
return False
16+
17+
slow = head
18+
fast = head.next
19+
while slow and fast and fast.next:
20+
slow = slow.next
21+
fast = fast.next.next
22+
if slow == fast:
23+
return True
24+
return False
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
class Solution:
2+
"""
3+
Brute Force
4+
5+
Time: O(n^2)
6+
Space: O(1)
7+
"""
8+
9+
def maxProduct(self, nums: List[int]) -> int:
10+
11+
max_prod = float(-inf)
12+
for i in range(len(nums)):
13+
prod = nums[i]
14+
max_prod = max(max_prod, prod)
15+
for j in range(i + 1, len(nums)):
16+
prod *= nums[j]
17+
max_prod = max(max_prod, prod)
18+
19+
return max_prod
20+
21+
"""
22+
์ตœ์†Œ๊ณฑ, ์ตœ๋Œ€๊ณฑ์„ ๋ชจ๋‘ ์ €์žฅํ•˜๋ฉด์„œ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ๋Š”๋‹ค.
23+
(์Œ์ˆ˜ ๊ณฑ ์–‘์ˆ˜๊ณฑ์„ ๋ชจ๋‘ ์ปค๋ฒ„ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์†Œ๊ณฑ๋„ ์ €์žฅํ•œ๋‹ค.)
24+
25+
Time: O(n)
26+
Space: O(1)
27+
"""
28+
29+
def maxProduct(self, nums: List[int]) -> int:
30+
result = nums[0]
31+
min_prod, max_prod = 1, 1
32+
for num in nums:
33+
arr = [min_prod * num, max_prod * num, num]
34+
min_prod = min(arr)
35+
max_prod = max(arr)
36+
result = max(max_prod, result)
37+
return result
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
"""
2+
Solution:
3+
1) ๊ฐ€์žฅ์ž๋ฆฌ์—์„œ ์‹œ์ž‘ํ•ด์„œ ์–ด๋””๊นŒ์ง€ ์˜ฌ๋ผ๊ฐˆ์ˆ˜์žˆ๋Š”์ง€ ์ฒดํฌํ•œ๋‹ค.
4+
2) ๊ต์ง‘ํ•ฉ์„ ์ฐพ๋Š”๋‹ค.
5+
6+
Time: O(m * n)
7+
Space: O(m * n)
8+
"""
9+
10+
11+
class Solution:
12+
def pacificAtlantic(self, heights: List[List[int]]) -> List[List[int]]:
13+
ROWS, COLS = len(heights), len(heights[0])
14+
pacific, atlantic = set(), set()
15+
16+
def dfs(visit, r, c):
17+
if (r, c) in visit:
18+
return
19+
visit.add((r, c))
20+
21+
for i, j in [(r + 1, c), (r - 1, c), (r, c + 1), (r, c - 1)]:
22+
if 0 <= i and i < ROWS and 0 <= j and j < COLS:
23+
if heights[i][j] >= heights[r][c]:
24+
dfs(visit, i, j)
25+
26+
for i in range(ROWS):
27+
dfs(pacific, i, 0)
28+
dfs(atlantic, i, COLS - 1)
29+
for i in range(COLS):
30+
dfs(pacific, 0, i)
31+
dfs(atlantic, ROWS - 1, i)
32+
33+
return list(pacific.intersection(atlantic))

0 commit comments

Comments
ย (0)