首页 > 其他 > 详细

895. Maximum Frequency Stack

时间:2020-04-22 09:15:17      阅读:69      评论:0      收藏:0      [点我收藏+]

Problem:

Implement FreqStack, a class which simulates the operation of a stack-like data structure.

FreqStack has two functions:

  • push(int x), which pushes an integer x 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:

Input: 
["FreqStack","push","push","push","push","push","push","pop","pop","pop","pop"],
[[],[5],[7],[5],[7],[4],[5],[],[],[],[]]
Output: [null,null,null,null,null,null,null,5,7,5,4]
Explanation:
After making six .push operations, the stack is [5,7,5,7,4,5] from bottom to top.  Then:

pop() -> returns 5, as 5 is the most frequent.
The stack becomes [5,7,5,7,4].

pop() -> returns 7, as 5 and 7 is the most frequent, but 7 is closest to the top.
The stack becomes [5,7,5,4].

pop() -> returns 5.
The stack becomes [5,7,4].

pop() -> returns 4.
The stack becomes [5,7].

Note:

  • Calls to FreqStack.push(int x) will be such that 0 <= 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 exceed 10000 in a single test case.
  • The total number of FreqStack.pop calls will not exceed 10000 in a single test case.
  • The total number of FreqStack.push and FreqStack.pop calls will not exceed 150000 across all test cases.

思路

使用2个哈希表,一个保存频率,一个保存根据频率值确定的元素栈,即每个元素在频率为1到其最大频率的栈内均有值。

Solution (C++):

unordered_map<int, int> freq;
unordered_map<int, stack<int>> stk;
int max_freq = 0;
FreqStack() {
    
}

void push(int x) {
    max_freq = max(max_freq, ++freq[x]);
    stk[freq[x]].push(x);
}

int pop() {
    if (max_freq == 0)  return -1;
    int x = stk[max_freq].top();
    stk[max_freq].pop();
    if (stk[freq[x]--].empty())  --max_freq;
    return x;
}

性能

Runtime: 348 ms??Memory Usage: 72.3 MB

思路

Solution (C++):


性能

Runtime: ms??Memory Usage: MB

895. Maximum Frequency Stack

原文:https://www.cnblogs.com/dysjtu1995/p/12749250.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!