Design a data structure that keeps track of the values in it and answers some queries regarding their mean, median, and mode.
Implement the StatisticsTracker class.
StatisticsTracker(): Initialize the StatisticsTracker object with an empty array.void addNumber(int number): Add number to the data structure.void removeFirstAddedNumber(): Remove the earliest added number from the data structure.int getMean(): Return the floored mean of the numbers in the data structure.int getMedian(): Return the median of the numbers in the data structure.int getMode(): Return the mode of the numbers in the data structure. If there are multiple modes, return the smallest one.Note:
Example 1:
Input:
["StatisticsTracker", "addNumber", "addNumber", "addNumber", "addNumber", "getMean", "getMedian", "getMode", "removeFirstAddedNumber", "getMode"]
[[], [4], [4], [2], [3], [], [], [], [], []]
Output:
[null, null, null, null, null, 3, 4, 4, null, 2]
Explanation
StatisticsTracker statisticsTracker = new StatisticsTracker();Example 2:
Input:
["StatisticsTracker", "addNumber", "addNumber", "getMean", "removeFirstAddedNumber", "addNumber", "addNumber", "removeFirstAddedNumber", "getMedian", "addNumber", "getMode"]
[[], [9], [5], [], [], [5], [6], [], [], [8], []]
Output:
[null, null, null, 7, null, null, null, null, 6, null, 5]
Explanation
StatisticsTracker statisticsTracker = new StatisticsTracker();Constraints:
1 <= number <= 109105 calls will be made to addNumber, removeFirstAddedNumber, getMean, getMedian, and getMode in total.removeFirstAddedNumber, getMean, getMedian, and getMode will be called only if there is at least one element in the data structure.Loading editor...
["StatisticsTracker","addNumber","addNumber","addNumber","addNumber","getMean","getMedian","getMode","removeFirstAddedNumber","getMode"] [[],[4],[4],[2],[3],[],[],[],[],[]]