Skip to content

Commit 9fc8c9e

Browse files
authored
Merge pull request #2317 from 8804who/main
[8804who] WEEK 13 solutions
2 parents 84ad16d + cf9327f commit 9fc8c9e

4 files changed

Lines changed: 86 additions & 0 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import heapq
2+
3+
class MedianFinder:
4+
5+
def __init__(self):
6+
self.max_heap = []
7+
self.min_heap = []
8+
9+
def addNum(self, num: int) -> None:
10+
if not self.min_heap or self.min_heap[0] <= num:
11+
heapq.heappush(self.min_heap, num)
12+
else:
13+
heapq.heappush(self.max_heap, -num)
14+
15+
if len(self.min_heap) < len(self.max_heap):
16+
heapq.heappush(self.min_heap, -heapq.heappop(self.max_heap))
17+
elif len(self.min_heap) > len(self.max_heap) + 1:
18+
heapq.heappush(self.max_heap, -heapq.heappop(self.min_heap))
19+
20+
def findMedian(self) -> float:
21+
if len(self.min_heap) == len(self.max_heap):
22+
return (self.min_heap[0]-self.max_heap[0])/2
23+
else:
24+
return self.min_heap[0]
25+
26+

insert-interval/8804who.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution:
2+
def insert(self, intervals: List[List[int]], newInterval: List[int]) -> List[List[int]]:
3+
new_start = 1e9
4+
new_end = -1
5+
6+
answer = []
7+
8+
for start, end in intervals:
9+
if start <= newInterval[0] <= end or newInterval[0] <= start <= newInterval[1] or newInterval[0] <= end <= newInterval[1] or start <= newInterval[1] <= end:
10+
if new_start == 1e9:
11+
new_start = start
12+
new_end = end
13+
else:
14+
answer.append([start, end])
15+
new_start = min(new_start, newInterval[0])
16+
new_end = max(new_end, newInterval[1])
17+
18+
answer.append([new_start, new_end])
19+
return sorted(answer)
20+
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
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 kthSmallest(self, root: Optional[TreeNode], k: int) -> int:
9+
answer = 0
10+
11+
def dfs(node):
12+
nonlocal k
13+
nonlocal answer
14+
if node.left:
15+
dfs(node.left)
16+
k -= 1
17+
if k == 0:
18+
answer = node.val
19+
return
20+
if node.right:
21+
dfs(node.right)
22+
dfs(root)
23+
24+
return answer
25+
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode:
3+
# def __init__(self, x):
4+
# self.val = x
5+
# self.left = None
6+
# self.right = None
7+
8+
class Solution:
9+
def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
10+
if p.val < root.val and q.val < root.val:
11+
return self.lowestCommonAncestor(root.left, p, q)
12+
if p.val > root.val and q.val > root.val:
13+
return self.lowestCommonAncestor(root.right, p, q)
14+
return root
15+

0 commit comments

Comments
 (0)