Solution: Finding MK Average
Explore how to develop a custom data structure that efficiently calculates the MK Average from a streaming set of integers. Learn to manage a sliding window and maintain balanced partitions of values to enable constant-time average computation. Understand the algorithm’s logic, including binary search-based insertion and rebalancing of data segments, to optimize performance in time and space complexity.
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()...