forked from super30admin/Design-2
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathQueueStack.java
More file actions
81 lines (60 loc) · 1.96 KB
/
Copy pathQueueStack.java
File metadata and controls
81 lines (60 loc) · 1.96 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
// Time Complexity : O(1)
// Space Complexity : O(n)
// Did this code successfully run on Leetcode : Yes
// Any problem you faced while coding this :
// Your code here along with comments explaining your approach
My approach is using two stacks input and output respectively.
We will push the values to input stack. But when we pop the the values we will check if the input stack is empty or not.
If it's not empty we will pop the input stack values and push them in output stack. and when someone asks to pop the value fro queue we
will return the top value of output stack. Hence, meeting the requirement of FIFO in Queue.
class MyQueue {
Stack <Integer> input;
Stack <Integer> output;
/** Initialize your data structure here. */
public MyQueue() {
input = new Stack<>();
output= new Stack<>();
}
/** Push element x to the back of queue. */
public void push(int x) {
input.push(x);
}
/** Removes the element from in front of queue and returns that element. */
public int pop() {
while(!input.isEmpty())
{
output.push(input.pop());
}
int top = output.pop();
while (!output.isEmpty())
{
input.push(output.pop());
}
return top;
}
/** Get the front element. */
public int peek() {
while(!input.isEmpty())
{
output.push(input.pop());
}
int top = output.peek();
while (!output.isEmpty())
{
input.push(output.pop());
}
return top;
}
/** Returns whether the queue is empty. */
public boolean empty() {
return input.isEmpty() && output.isEmpty();
}
}
/**
* Your MyQueue object will be instantiated and called as such:
* MyQueue obj = new MyQueue();
* obj.push(x);
* int param_2 = obj.pop();
* int param_3 = obj.peek();
* boolean param_4 = obj.empty();
*/