[
hash table
bst
design
heap
]
BinarySearch 0778 Highest Volume Stocks
Problem statement
https://binarysearch.com/problems/Highest-Volume-Stocks/
Solution
The idea is to keep for each name value and also keep sortedlist of all pairs (name, value).
Complexity
It is O(n log n) for init, O(log n) for add and O(k log k) for top.
Code
class StockMarket:
def __init__(self, stocks, amounts):
self.scores = Counter()
for s, a in zip(stocks, amounts):
self.scores[s] = a
self.SList = SortedList([(-a, s) for s, a in zip(stocks, amounts)])
print(self.SList)
def add(self, s, amount):
if s in self.scores: self.SList.remove((-self.scores[s], s))
self.scores[s] += amount
self.SList.add((-self.scores[s], s))
def top(self, K):
return [self.SList[i][1] for i in range(K)]
Remark
Similar logic can be implemented with heaps.