895 Maximum Frequency Stack
1. Question
ImplementFreqStack
, a class which simulates the operation of a stack-like data structure.
FreqStack
has two functions:
push(int x)
, which pushes an integerx
onto the stack.pop()
, which removes and returns the most frequent element in the stack.If there is a tie for most frequent element, the element closest to the top of the stack is removed and returned.
Example 1:
Note:
Calls to
FreqStack.push(int x)
will be such that0 <= x <= 10^9
.It is guaranteed that
FreqStack.pop()
won't be called if the stack has zero elements.The total number of
FreqStack.push
calls will not exceed10000
in a single test case.The total number of
FreqStack.pop
calls will not exceed10000
in a single test case.The total number of
FreqStack.push
andFreqStack.pop
calls will not exceed150000
across all test cases.
2. Implementation
(1) HashTable + Stack
思路: 用一个hashTable记录每个数字的frequency,用另一个hashTable存储拥有该frequency的所有数,由于题目要求有多有两个数出现频数最高时,返回最接近stack的那个,所以第二个hashTable的key就是frequency,value是Stack. 最后我们定义一个maxFreq来记录当前最高频数
3. Time & Space Complexity
HashTable + Stack: 时间复杂度push(): O(1), pop(): O(1), 空间复杂度O(n)
Last updated
Was this helpful?