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