Skip to content

Commit cbcbfae

Browse files
Merge pull request #1610 from printjin-gmailcom/main
[printjin-gmailcom] Week 13 Solutions
2 parents 23f4652 + cb9dd7b commit cbcbfae

File tree

5 files changed

+65
-0
lines changed

5 files changed

+65
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import heapq
2+
3+
class MedianFinder:
4+
def __init__(self):
5+
self.low = []
6+
self.high = []
7+
def addNum(self, num):
8+
heapq.heappush(self.low, -num)
9+
heapq.heappush(self.high, -heapq.heappop(self.low))
10+
if len(self.high) > len(self.low):
11+
heapq.heappush(self.low, -heapq.heappop(self.high))
12+
def findMedian(self):
13+
if len(self.low) > len(self.high):
14+
return -self.low[0]
15+
return (-self.low[0] + self.high[0]) / 2

insert-interval/printjin-gmailcom.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution:
2+
def insert(self, intervals, newInterval):
3+
result = []
4+
i = 0
5+
n = len(intervals)
6+
while i < n and intervals[i][1] < newInterval[0]:
7+
result.append(intervals[i])
8+
i += 1
9+
while i < n and intervals[i][0] <= newInterval[1]:
10+
newInterval[0] = min(newInterval[0], intervals[i][0])
11+
newInterval[1] = max(newInterval[1], intervals[i][1])
12+
i += 1
13+
result.append(newInterval)
14+
while i < n:
15+
result.append(intervals[i])
16+
i += 1
17+
return result
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution:
2+
def kthSmallest(self, root, k):
3+
self.count = 0
4+
self.result = 0
5+
def inorder(node):
6+
if not node:
7+
return
8+
inorder(node.left)
9+
self.count += 1
10+
if self.count == k:
11+
self.result = node.val
12+
return
13+
inorder(node.right)
14+
inorder(root)
15+
return self.result
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class Solution:
2+
def lowestCommonAncestor(self, root, p, q):
3+
while root:
4+
if p.val < root.val and q.val < root.val:
5+
root = root.left
6+
elif p.val > root.val and q.val > root.val:
7+
root = root.right
8+
else:
9+
return root

meeting-rooms/printjin-gmailcom,.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from typing import List
2+
3+
class Solution:
4+
def canAttendMeetings(self, intervals: List[Interval]) -> bool:
5+
intervals.sort(key=lambda x: x.start)
6+
for i in range(1, len(intervals)):
7+
if intervals[i].start < intervals[i - 1].end:
8+
return False
9+
return True

0 commit comments

Comments
 (0)