File tree Expand file tree Collapse file tree 5 files changed +80
-0
lines changed
maximum-depth-of-binary-tree Expand file tree Collapse file tree 5 files changed +80
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def climbStairs (self , n : int ) -> int :
3
+ fast , slow = 1 , 1
4
+
5
+ for i in range (n - 1 ):
6
+ tmp = fast
7
+ fast = fast + slow
8
+ slow = tmp
9
+
10
+ return fast
11
+
12
+ ## TC: O(n), SC(1)
Original file line number Diff line number Diff line change
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
+
12
+ return max (self .maxDepth (root .left ), self .maxDepth (root .right )) + 1
13
+
14
+ ## TC: O(n), SC: O(n) or O(logn) if it is balanced
Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def canAttendMeetings (self , intervals : List [List [int ]]) -> bool :
3
+ intervals .sort () ## nlogn
4
+
5
+ for i in range (len (intervals ) - 1 ):
6
+ if intervals [i ][1 ] > intervals [i + 1 ][0 ]:
7
+ return False
8
+
9
+ return True
10
+
11
+ ## TC: n(nlogn), SC: O(1)
Original file line number Diff line number Diff line change
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 isSameTree (self , p : Optional [TreeNode ], q : Optional [TreeNode ]) -> bool :
9
+ if p and q :
10
+ return p .val == q .val and self .isSameTree (p .right , q .right ) and self .isSameTree (p .left , q .left )
11
+ else :
12
+ return p == q
13
+
14
+ ## TC: O(n), SC: O(n) or O(logn) if it is balanced
Original file line number Diff line number Diff line change
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 isSubtree (self , root : Optional [TreeNode ], subRoot : Optional [TreeNode ]) -> bool :
9
+ def dfs (root , subroot ):
10
+ if not root and not subroot :
11
+ return True
12
+ if not root or not subroot :
13
+ return False
14
+ if root .val != subroot .val :
15
+ return False
16
+
17
+ return dfs (root .left , subroot .left ) and dfs (root .right , subroot .right )
18
+
19
+ def solve (root , subroot ):
20
+ if not root :
21
+ return False
22
+ if dfs (root , subroot ):
23
+ return True
24
+ return solve (root .left , subroot ) or solve (root .right , subroot )
25
+
26
+ return solve (root , subRoot )
27
+
28
+ ## TC: O(mn), where m and n denote len(subroot) and len(root)
29
+ ## SC: O(m+n)
You can’t perform that action at this time.
0 commit comments