Skip to content

Commit 0e03c40

Browse files
authored
Merge pull request #2306 from 8804who/main
[8804who] WEEK 12 solutions
2 parents 3c20455 + 73afd69 commit 0e03c40

4 files changed

Lines changed: 146 additions & 0 deletions

File tree

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
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+
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
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+

same-tree/8804who.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
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+
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
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))

0 commit comments

Comments
 (0)