1825. Find MK Average
Solution Approach
Maintain 3 multisets: lower (the smallest k elements), middle (elements in between), and upper (the largest k elements).
Insert Operation
- If
num ≤ max(lower), insertnumintolower - If
num ≥ min(upper), insertnumintoupper - Otherwise, insert
numintomiddle
After insertion, if lower or upper has more than k elements, transfer an element to middle.
Throughout the operation, maintain the element sum of middle.
Delete Operation
- Let the element to delete be
d dmust exist in one or more oflower,middle, orupper- Delete from the appropriate set
After deletion, if lower or upper has fewer than k elements, retrieve an element from middle.
Throughout the operation, maintain the element sum of middle.
Average Operation
(rounded down).
Code with issues:
class MKAverage:
def __init__(self, m: int, k: int):
self.m = m
self.k = k
self.list1 = []
def addElement(self, num: int) -> None:
self.list1.append(num)
def calculateMKAverage(self) -> int:
if len(self.list1) < self.m:
return -1
else:
list2 = self.list1[-1:-self.m-1:-1]
list2 = sorted(list2)
list2 = list2[self.k:len(list2) - self.k]
return sum(list2) // len(list2)贡献者
这篇文章有帮助吗?
最近更新
Involution Hell© 2026 byCommunityunderCC BY-NC-SA 4.0