File tree 1 file changed +12
-21
lines changed
1 file changed +12
-21
lines changed Original file line number Diff line number Diff line change
1
+ from collections import deque
1
2
class MyStack (object ):
2
-
3
3
def __init__ (self ):
4
4
"""
5
5
Initialize your data structure here.
6
6
"""
7
- self .queue1 = []
8
- self .queue2 = []
7
+ self .q1 = deque ()
8
+ self .q2 = deque ()
9
9
10
10
def push (self , x ):
11
11
"""
12
12
Push element x onto stack.
13
13
:type x: int
14
14
:rtype: None
15
15
"""
16
- self .queue1 .append (x )
17
-
18
- while len (self .queue1 ) > 1 :
19
- self .queue2 . append ( self . queue1 [ 0 ])
20
- self .queue1 = self . queue1 [ 1 :]
16
+ self .q1 .append (x )
17
+ while self . q2 :
18
+ self . q1 . append (self .q2 . popleft ())
19
+ self . q2 = self .q1
20
+ self .q1 = deque ()
21
21
22
-
23
- # print self.queue1, self.queue2
24
22
def pop (self ):
25
23
"""
26
24
Removes the element on top of the stack and returns that element.
27
25
:rtype: int
28
26
"""
29
- # print self.queue1, self.queue2
30
- top = self .queue1 [0 ]
31
- self .queue1 , self .queue2 = self .queue2 , []
32
- while len (self .queue1 ) > 1 :
33
- self .queue2 .append (self .queue1 [0 ])
34
- self .queue1 = self .queue1 [1 :]
35
- return top
36
-
27
+ return self .q2 .popleft ()
37
28
38
29
def top (self ):
39
30
"""
40
31
Get the top element.
41
32
:rtype: int
42
33
"""
43
- return self .queue1 [0 ]
44
-
34
+ return self .q2 [0 ]
35
+
45
36
def empty (self ):
46
37
"""
47
38
Returns whether the stack is empty.
48
39
:rtype: bool
49
40
"""
50
- return not self .queue1 and not self . queue2
41
+ return not self .q2
51
42
52
43
53
44
# Your MyStack object will be instantiated and called as such:
You can’t perform that action at this time.
0 commit comments