Skip to content

Commit f180b47

Browse files
Merge pull request #1561 from printjin-gmailcom/main
[printjin-gmailcom] week 11 solutions
2 parents e9aacc3 + b93eb38 commit f180b47

File tree

5 files changed

+62
-0
lines changed

5 files changed

+62
-0
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution:
2+
def maxPathSum(self, root):
3+
self.max_sum = float('-inf')
4+
def dfs(node):
5+
if not node:
6+
return 0
7+
left = max(dfs(node.left), 0)
8+
right = max(dfs(node.right), 0)
9+
self.max_sum = max(self.max_sum, node.val + left + right)
10+
return node.val + max(left, right)
11+
dfs(root)
12+
return self.max_sum

graph-valid-tree/printjin-gmailcom.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution:
2+
def valid_tree(self, n, edges):
3+
if len(edges) != n - 1:
4+
return False
5+
parent = [i for i in range(n)]
6+
def find(x):
7+
while parent[x] != x:
8+
parent[x] = parent[parent[x]]
9+
x = parent[x]
10+
return x
11+
for u, v in edges:
12+
pu, pv = find(u), find(v)
13+
if pu == pv:
14+
return False
15+
parent[pu] = pv
16+
return True

merge-intervals/printjin-gmailcom.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
class Solution:
2+
def merge(self, intervals):
3+
intervals.sort(key=lambda x: x[0])
4+
merged = []
5+
for interval in intervals:
6+
if not merged or merged[-1][1] < interval[0]:
7+
merged.append(interval)
8+
else:
9+
merged[-1][1] = max(merged[-1][1], interval[1])
10+
return merged

missing-number/printjin-gmailcom.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
class Solution:
2+
def missingNumber(self, nums):
3+
n = len(nums)
4+
expected_sum = n * (n + 1) // 2
5+
actual_sum = sum(nums)
6+
return expected_sum - actual_sum

reorder-list/printjin-gmailcom.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution:
2+
def reorderList(self, head):
3+
if not head:
4+
return
5+
nodes = []
6+
current = head
7+
while current:
8+
nodes.append(current)
9+
current = current.next
10+
i, j = 0, len(nodes) - 1
11+
while i < j:
12+
nodes[i].next = nodes[j]
13+
i += 1
14+
if i == j:
15+
break
16+
nodes[j].next = nodes[i]
17+
j -= 1
18+
nodes[i].next = None

0 commit comments

Comments
 (0)