-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path895.maximum-frequency-stack.cpp
More file actions
98 lines (90 loc) · 2.48 KB
/
895.maximum-frequency-stack.cpp
File metadata and controls
98 lines (90 loc) · 2.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/*
* @lc app=leetcode id=895 lang=cpp
*
* [895] Maximum Frequency Stack
*
* https://leetcode.com/problems/maximum-frequency-stack/description/
*
* algorithms
* Hard (66.51%)
* Likes: 3731
* Dislikes: 54
* Total Accepted: 130.6K
* Total Submissions: 196.2K
* Testcase Example: '["FreqStack","push","push","push","push","push","push","pop","pop","pop","pop"]\n' +
'[[],[5],[7],[5],[7],[4],[5],[],[],[],[]]'
*
* Design a stack-like data structure to push elements to the stack and pop the
* most frequent element from the stack.
*
* Implement the FreqStack class:
*
*
* FreqStack() constructs an empty frequency stack.
* void push(int val) pushes an integer val onto the top of the stack.
* int pop() removes and returns the most frequent element in the
* stack.
*
* If there is a tie for the most frequent element, the element closest to the
* stack's top 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
* FreqStack freqStack = new FreqStack();
* freqStack.push(5); // The stack is [5]
* freqStack.push(7); // The stack is [5,7]
* freqStack.push(5); // The stack is [5,7,5]
* freqStack.push(7); // The stack is [5,7,5,7]
* freqStack.push(4); // The stack is [5,7,5,7,4]
* freqStack.push(5); // The stack is [5,7,5,7,4,5]
* freqStack.pop(); // return 5, as 5 is the most frequent. The stack becomes
* [5,7,5,7,4].
* freqStack.pop(); // return 7, as 5 and 7 is the most frequent, but 7 is
* closest to the top. The stack becomes [5,7,5,4].
* freqStack.pop(); // return 5, as 5 is the most frequent. The stack becomes
* [5,7,4].
* freqStack.pop(); // return 4, as 4, 5 and 7 is the most frequent, but 4 is
* closest to the top. The stack becomes [5,7].
*
*
*
* Constraints:
*
*
* 0 <= val <= 10^9
* At most 2 * 10^4 calls will be made to push and pop.
* It is guaranteed that there will be at least one element in the stack before
* calling pop.
*
*
*/
// @lc code=start
class FreqStack {
public:
FreqStack() {
}
void push(int val) {
}
int pop() {
}
};
/**
* Your FreqStack object will be instantiated and called as such:
* FreqStack* obj = new FreqStack();
* obj->push(val);
* int param_2 = obj->pop();
*/
// @lc code=end