Solution: Finding MK Average
Explore the implementation of an MKAverage class that maintains a moving window over a data stream, efficiently computing the MK Average by discarding smallest and largest elements. Understand how to use three sorted lists and a deque for insertion, removal, and rebalancing to enable fast average calculation. This lesson helps you apply custom data structures and binary search for scalable coding interview solutions.
We'll cover the following...
Statement
You are given two integers, m and k, and a stream of integers. Your task is to design and implement a data structure that efficiently calculates the MK Average for the stream.
To compute the MK Average, follow these steps:
Stream length check: If the stream contains fewer than
melements, return-1as the MK Average.Window selection: Otherwise, copy the last
melements of the stream to a separate container and remove the smallestkelements and the largestkelements from the container.Average calculation: Calculate the average of the remaining elements (rounded down to the nearest integer).
Implement the MKAverage class
MKAverage(int m, int k): Initializes the object with integersmandkand an empty stream.void addElement(int num): Adds the integernumto the stream.int calculateMKAverage()...