File tree Expand file tree Collapse file tree
non-overlapping-intervals
remove-nth-node-from-end-of-list
serialize-and-deserialize-binary-tree Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ class Solution :
2+ def eraseOverlapIntervals (self , intervals : List [List [int ]]) -> int :
3+ answer , end = 0 , - inf
4+ intervals .sort (key = lambda x :x [1 ])
5+
6+ for i_s , i_e in intervals :
7+ if end <= i_s :
8+ end = i_e
9+ else :
10+ answer += 1
11+
12+ return answer
13+
Original file line number Diff line number Diff line change 1+ # Definition for singly-linked list.
2+ # class ListNode:
3+ # def __init__(self, val=0, next=None):
4+ # self.val = val
5+ # self.next = next
6+ class Solution :
7+ def removeNthFromEnd (self , head : Optional [ListNode ], n : int ) -> Optional [ListNode ]:
8+ if not head :
9+ return None
10+
11+ temp = head
12+ length = 0
13+
14+ while temp :
15+ length += 1
16+ temp = temp .next
17+
18+ return self .removeNth (head , length - n + 1 )
19+
20+ def removeNth (self , head , n ):
21+ if n == 1 :
22+ if not head .next :
23+ return None
24+ else :
25+ return head .next
26+ else :
27+ if not head .next :
28+ return head
29+ head .next = self .removeNth (head .next , n - 1 )
30+ return head
31+
32+
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+ return self .searchTree (p , q )
10+
11+ def searchTree (self , node1 , node2 ):
12+ if (not node1 and node2 ) or (node1 and not node2 ):
13+ return False
14+ elif not node1 and not node2 :
15+ return True
16+ elif node1 .val != node2 .val :
17+ return False
18+
19+ if node1 .left and node2 .left :
20+ left = self .searchTree (node1 .left , node2 .left )
21+ elif not node1 .left and not node2 .left :
22+ left = True
23+ else :
24+ return False
25+
26+ if node1 .right and node2 .right :
27+ right = self .searchTree (node1 .right , node2 .right )
28+ elif not node1 .right and not node2 .right :
29+ right = True
30+ else :
31+ return False
32+ return left and right
33+
Original file line number Diff line number Diff line change 1+ from collections import deque
2+
3+ # Definition for a binary tree node.
4+ # class TreeNode(object):
5+ # def __init__(self, x):
6+ # self.val = x
7+ # self.left = None
8+ # self.right = None
9+
10+ class Codec :
11+
12+ def serialize (self , root ):
13+ """Encodes a tree to a single string.
14+
15+ :type root: TreeNode
16+ :rtype: str
17+ """
18+ if not root :
19+ return ''
20+ nodes = []
21+
22+ q = deque ([[root , 1 ]])
23+
24+ while q :
25+ node , idx = q .popleft ()
26+ if not node :
27+ continue
28+ nodes .append (str (idx )+ ":" + str (node .val ))
29+ q .append ([node .left , idx * 2 ])
30+ q .append ([node .right , idx * 2 + 1 ])
31+
32+ return '/' .join (nodes )
33+
34+
35+
36+ def deserialize (self , data ):
37+ """Decodes your encoded data to tree.
38+
39+ :type data: str
40+ :rtype: TreeNode
41+ """
42+ if data == '' :
43+ return None
44+
45+ data = data .split ('/' )
46+
47+ node_dict = {}
48+
49+ for chunk in data :
50+ idx , val = chunk .split (':' )
51+ node_dict [int (idx )] = val
52+
53+ def dfs (idx ):
54+ if idx in node_dict :
55+ node = TreeNode (int (node_dict [idx ]))
56+ node .left = dfs (idx * 2 )
57+ node .right = dfs (idx * 2 + 1 )
58+ return node
59+ else :
60+ return None
61+
62+ return dfs (1 )
63+
64+
65+ # Your Codec object will be instantiated and called as such:
66+ # ser = Codec()
67+ # deser = Codec()
68+ # ans = deser.deserialize(ser.serialize(root))
You can’t perform that action at this time.
0 commit comments