Skip to content

Commit 36210b0

Browse files
authored
Merge pull request #83 from saysimple0828/saysimple-week3
[saysimple] 3주차 문제 풀이
2 parents 7672c10 + d87efab commit 36210b0

File tree

5 files changed

+87
-0
lines changed

5 files changed

+87
-0
lines changed

climbing-stairs/saysimple.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
## TC: O(n), SC:O(1)
2+
3+
class Solution:
4+
def climbStairs(self, n: int) -> int:
5+
a, b = 1, 1
6+
7+
for i in range(n - 1):
8+
a, b = a + b, a
9+
10+
return a
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode:
3+
# def __init__(self, val=0, left=None, right=None):
4+
# self.val = val
5+
# self.left = left
6+
# self.right = right
7+
class Solution:
8+
def maxDepth(self, root: Optional[TreeNode]) -> int:
9+
if not root:
10+
return 0
11+
return 1 + max(self.maxDepth(root.left), self.maxDepth(root.right))

meeting-rooms/saysimple.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# TC: O(n), SC: O(1)
2+
class Solution:
3+
def canAttendMeetings(self, intervals: List[Interval]) -> bool:
4+
if not intervals:
5+
return True
6+
7+
intervals.sort(key=lambda x: x.start)
8+
9+
e = intervals[0].end
10+
11+
for i in range(1, len(intervals)):
12+
if intervals[i].start < e:
13+
return False
14+
e = intervals[i].end
15+
16+
return True

same-tree/saysimple.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# TC: O(n), SC:O(n)
2+
# Definition for a binary tree node.
3+
# class TreeNode:
4+
# def __init__(self, val=0, left=None, right=None):
5+
# self.val = val
6+
# self.left = left
7+
# self.right = right
8+
class Solution:
9+
t = []
10+
def pre_order(self, node: TreeNode):
11+
if node is None:
12+
self.t.append(None)
13+
return
14+
15+
self.t.append(node.val)
16+
self.pre_order(node.left)
17+
self.pre_order(node.right)
18+
19+
def isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool:
20+
self.t = []
21+
self.pre_order(p)
22+
a = self.t[:]
23+
self.t = []
24+
self.pre_order(q)
25+
b = self.t[:]
26+
27+
return a == b

subtree-of-another-tree/saysimple.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# TC: O(mn), SC: O(m+n)
2+
# Definition for a binary tree node.
3+
# class TreeNode:
4+
# def __init__(self, val=0, left=None, right=None):
5+
# self.val = val
6+
# self.left = left
7+
# self.right = right
8+
class Solution:
9+
def isSubtree(self, root: Optional[TreeNode], subRoot: Optional[TreeNode]) -> bool:
10+
def prev(root, subRoot):
11+
if not root or not subRoot:
12+
return root == subRoot
13+
if root.val != subRoot.val:
14+
return False
15+
16+
return prev(root.left, subRoot.left) and prev(root.right, subRoot.right)
17+
18+
if not root:
19+
return False
20+
if prev(root, subRoot):
21+
return True
22+
23+
return self.isSubtree(root.left, subRoot) or self.isSubtree(root.right, subRoot)

0 commit comments

Comments
 (0)