-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path225.implement-stack-using-queues.cpp
More file actions
114 lines (106 loc) · 2.52 KB
/
225.implement-stack-using-queues.cpp
File metadata and controls
114 lines (106 loc) · 2.52 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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/*
* @lc app=leetcode id=225 lang=cpp
*
* [225] Implement Stack using Queues
*
* https://leetcode.com/problems/implement-stack-using-queues/description/
*
* algorithms
* Easy (55.77%)
* Likes: 3028
* Dislikes: 881
* Total Accepted: 354.1K
* Total Submissions: 632.8K
* Testcase Example: '["MyStack","push","push","top","pop","empty"]\n[[],[1],[2],[],[],[]]'
*
* Implement a last-in-first-out (LIFO) stack using only two queues. The
* implemented stack should support all the functions of a normal stack (push,
* top, pop, and empty).
*
* Implement the MyStack class:
*
*
* void push(int x) Pushes element x to the top of the stack.
* int pop() Removes the element on the top of the stack and returns it.
* int top() Returns the element on the top of the stack.
* boolean empty() Returns true if the stack is empty, false otherwise.
*
*
* Notes:
*
*
* You must use only standard operations of a queue, which means that only push
* to back, peek/pop from front, size and is empty operations are valid.
* Depending on your language, the queue may not be supported natively. You may
* simulate a queue using a list or deque (double-ended queue) as long as you
* use only a queue's standard operations.
*
*
*
* Example 1:
*
*
* Input
* ["MyStack", "push", "push", "top", "pop", "empty"]
* [[], [1], [2], [], [], []]
* Output
* [null, null, null, 2, 2, false]
*
* Explanation
* MyStack myStack = new MyStack();
* myStack.push(1);
* myStack.push(2);
* myStack.top(); // return 2
* myStack.pop(); // return 2
* myStack.empty(); // return False
*
*
*
* Constraints:
*
*
* 1 <= x <= 9
* At most 100 calls will be made to push, pop, top, and empty.
* All the calls to pop and top are valid.
*
*
*
* Follow-up: Can you implement the stack using only one queue?
*
*/
// @lc code=start
class MyStack {
private:
#include <queue>
queue<int> in,out;
public:
MyStack() {
}
void push(int x) {
in.push(x);
for(int i = 0;i<in.size()-1;i++){
in.push(in.front());
in.pop();
}
}
int pop() {
int hold = in.front();
in.pop();
return hold;
}
int top() {
return in.front();
}
bool empty() {
return in.empty();
}
};
/**
* Your MyStack object will be instantiated and called as such:
* MyStack* obj = new MyStack();
* obj->push(x);
* int param_2 = obj->pop();
* int param_3 = obj->top();
* bool param_4 = obj->empty();
*/
// @lc code=end