diff --git a/binary-tree-maximum-path-sum/8804who.py b/binary-tree-maximum-path-sum/8804who.py new file mode 100644 index 0000000000..c76c4cfc4d --- /dev/null +++ b/binary-tree-maximum-path-sum/8804who.py @@ -0,0 +1,31 @@ +# Definition for a binary tree node. +# class TreeNode: +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right +class Solution: + def __init__(self): + self.answer = -1e9 + + def maxPathSum(self, root: Optional[TreeNode]) -> int: + self.getSum(root, 0) + return self.answer + + def getSum(self, node, depth): + val = node.val + leftMax = self.getSum(node.left, depth+1) if node.left else 0 + rightMax = self.getSum(node.right, depth+1) if node.right else 0 + + temp = val + (leftMax if leftMax > 0 else 0) + (rightMax if rightMax > 0 else 0) + + if self.answer < temp: + self.answer = temp + + if leftMax > rightMax: + val += leftMax if leftMax > 0 else 0 + else: + val += rightMax if rightMax > 0 else 0 + + return val + diff --git a/merge-intervals/8804who.py b/merge-intervals/8804who.py new file mode 100644 index 0000000000..3a7a5ec170 --- /dev/null +++ b/merge-intervals/8804who.py @@ -0,0 +1,15 @@ +class Solution: + def merge(self, intervals: List[List[int]]) -> List[List[int]]: + intervals.sort() + + start = intervals[0][0] + end = intervals[0][1] + answer = [] + for interval in intervals[1:]+[[10001, 0]]: + if end < interval[0]: + answer.append([start, end]) + start = interval[0] + if interval[1] > end: + end = interval[1] + return answer + diff --git a/missing-number/8804who.py b/missing-number/8804who.py new file mode 100644 index 0000000000..e20bd16bd7 --- /dev/null +++ b/missing-number/8804who.py @@ -0,0 +1,4 @@ +class Solution: + def missingNumber(self, nums: List[int]) -> int: + return (len(nums)*(len(nums)+1)//2)-sum(nums) + diff --git a/reorder-list/8804who.py b/reorder-list/8804who.py new file mode 100644 index 0000000000..ae5f52257b --- /dev/null +++ b/reorder-list/8804who.py @@ -0,0 +1,30 @@ +from collections import deque +# Definition for singly-linked list. +# class ListNode: +# def __init__(self, val=0, next=None): +# self.val = val +# self.next = next +class Solution: + def __init__(self): + self.q = deque() + + def reorderList(self, head: Optional[ListNode]) -> None: + """ + Do not return anything, modify head in-place instead. + """ + temp = head + + while temp: + self.q.append(temp.val) + temp = temp.next + + self.makeList(head, 0) + + def makeList(self, node, n): + if n == 0: + node.val = self.q.popleft() + else: + node.val = self.q.pop() + if self.q: + self.makeList(node.next, (n+1)%2) +