From 8a1d6bac2556f841682e7428fcd9e85114b189f0 Mon Sep 17 00:00:00 2001 From: khw0828 <97077535+gusdn0828@users.noreply.github.com> Date: Sat, 18 May 2024 05:11:43 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=203=EC=A3=BC=EC=B0=A8=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=204=EA=B0=9C=20=ED=92=80=EC=9D=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- climbing-stairs/saysimple.py | 10 +++++++++ maximum-depth-of-binary-tree/saysimple.py | 11 +++++++++ same-tree/saysimple.py | 27 +++++++++++++++++++++++ subtree-of-another-tree/saysimple.py | 23 +++++++++++++++++++ 4 files changed, 71 insertions(+) create mode 100644 climbing-stairs/saysimple.py create mode 100644 maximum-depth-of-binary-tree/saysimple.py create mode 100644 same-tree/saysimple.py create mode 100644 subtree-of-another-tree/saysimple.py diff --git a/climbing-stairs/saysimple.py b/climbing-stairs/saysimple.py new file mode 100644 index 000000000..02c6f57a9 --- /dev/null +++ b/climbing-stairs/saysimple.py @@ -0,0 +1,10 @@ +## TC: O(n), SC:O(1) + +class Solution: + def climbStairs(self, n: int) -> int: + a, b = 1, 1 + + for i in range(n - 1): + a, b = a + b, a + + return a diff --git a/maximum-depth-of-binary-tree/saysimple.py b/maximum-depth-of-binary-tree/saysimple.py new file mode 100644 index 000000000..741cee74a --- /dev/null +++ b/maximum-depth-of-binary-tree/saysimple.py @@ -0,0 +1,11 @@ +# Definition for a binary tree node. +# class TreeNode: +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right +class Solution: + def maxDepth(self, root: Optional[TreeNode]) -> int: + if not root: + return 0 + return 1 + max(self.maxDepth(root.left), self.maxDepth(root.right)) diff --git a/same-tree/saysimple.py b/same-tree/saysimple.py new file mode 100644 index 000000000..c95fe9ff9 --- /dev/null +++ b/same-tree/saysimple.py @@ -0,0 +1,27 @@ +# TC: O(n), SC:O(n) +# Definition for a binary tree node. +# class TreeNode: +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right +class Solution: + t = [] + def pre_order(self, node: TreeNode): + if node is None: + self.t.append(None) + return + + self.t.append(node.val) + self.pre_order(node.left) + self.pre_order(node.right) + + def isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool: + self.t = [] + self.pre_order(p) + a = self.t[:] + self.t = [] + self.pre_order(q) + b = self.t[:] + + return a == b diff --git a/subtree-of-another-tree/saysimple.py b/subtree-of-another-tree/saysimple.py new file mode 100644 index 000000000..e81ed7add --- /dev/null +++ b/subtree-of-another-tree/saysimple.py @@ -0,0 +1,23 @@ +# TC: O(mn), SC: O(m+n) +# Definition for a binary tree node. +# class TreeNode: +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right +class Solution: + def isSubtree(self, root: Optional[TreeNode], subRoot: Optional[TreeNode]) -> bool: + def prev(root, subRoot): + if not root or not subRoot: + return root == subRoot + if root.val != subRoot.val: + return False + + return prev(root.left, subRoot.left) and prev(root.right, subRoot.right) + + if not root: + return False + if prev(root, subRoot): + return True + + return self.isSubtree(root.left, subRoot) or self.isSubtree(root.right, subRoot) From 62dbc8d5ce8e1e4892d0a6b5b3259413363f43d2 Mon Sep 17 00:00:00 2001 From: khw0828 <97077535+gusdn0828@users.noreply.github.com> Date: Sun, 19 May 2024 02:52:31 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=EB=AF=B8=ED=8C=85=EB=A3=B8=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=ED=92=80=EC=9D=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- meeting-rooms/saysimple.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 meeting-rooms/saysimple.py diff --git a/meeting-rooms/saysimple.py b/meeting-rooms/saysimple.py new file mode 100644 index 000000000..ab0451478 --- /dev/null +++ b/meeting-rooms/saysimple.py @@ -0,0 +1,15 @@ +class Solution: + def canAttendMeetings(self, intervals: List[Interval]) -> bool: + if not intervals: + return True + + intervals.sort(key=lambda x: x.start) + + e = intervals[0].end + + for i in range(1, len(intervals)): + if intervals[i].start < e: + return False + e = intervals[i].end + + return True From d87efabfc83beba763de93ec76f8eb715c044651 Mon Sep 17 00:00:00 2001 From: khw0828 <97077535+gusdn0828@users.noreply.github.com> Date: Sun, 19 May 2024 02:55:25 +0900 Subject: [PATCH 3/3] =?UTF-8?q?chore:=20=EC=8B=9C=EA=B0=84,=20=EA=B3=B5?= =?UTF-8?q?=EA=B0=84=EB=B3=B5=EC=9E=A1=EB=8F=84=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- meeting-rooms/saysimple.py | 1 + 1 file changed, 1 insertion(+) diff --git a/meeting-rooms/saysimple.py b/meeting-rooms/saysimple.py index ab0451478..14b785863 100644 --- a/meeting-rooms/saysimple.py +++ b/meeting-rooms/saysimple.py @@ -1,3 +1,4 @@ +# TC: O(n), SC: O(1) class Solution: def canAttendMeetings(self, intervals: List[Interval]) -> bool: if not intervals: