895 Maximum Frequency Stack
Last updated
Was this helpful?
Last updated
Was this helpful?
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 toFreqStack.push(int x)
will be such that0 <= x <= 10^9
.
It is guaranteed thatFreqStack.pop()
won't be called if the stack has zero elements.
The total number ofFreqStack.push
calls will not exceed10000
in a single test case.
The total number ofFreqStack.pop
calls will not exceed10000
in a single test case.
The total number ofFreqStack.push
andFreqStack.pop
calls will not exceed150000
across all test cases.
(1) HashTable + Stack
思路: 用一个hashTable记录每个数字的frequency,用另一个hashTable存储拥有该frequency的所有数,由于题目要求有多有两个数出现频数最高时,返回最接近stack的那个,所以第二个hashTable的key就是frequency,value是Stack. 最后我们定义一个maxFreq来记录当前最高频数
HashTable + Stack: 时间复杂度push(): O(1), pop(): O(1), 空间复杂度O(n)