Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions binary-tree-maximum-path-sum/8804who.py
Original file line number Diff line number Diff line change
@@ -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

15 changes: 15 additions & 0 deletions merge-intervals/8804who.py
Original file line number Diff line number Diff line change
@@ -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

4 changes: 4 additions & 0 deletions missing-number/8804who.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
class Solution:
def missingNumber(self, nums: List[int]) -> int:
return (len(nums)*(len(nums)+1)//2)-sum(nums)

30 changes: 30 additions & 0 deletions reorder-list/8804who.py
Original file line number Diff line number Diff line change
@@ -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)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

헉 queue 로 해결하는 방법 너무 신박하네요..! 👍

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 방법이 신기해서 제미나이에게 조금 물어보니 파이썬의 경우에는 재귀 호출을 제한한다고 하네요 (신기한 사실..)
보통 1천번까지 제한하지만 옵션 설정으로 풀 수는 있나봐요 (하지만 프로세스 내 스택 메모리를 다쓰면 동일한 문제가 있다곤 하네요~)