File tree 6 files changed +82
-0
lines changed
6 files changed +82
-0
lines changed Original file line number Diff line number Diff line change 39
39
- [x] [ Challenge 37: Active time] ( challenge-37/ )
40
40
- [x] [ Challenge 38: Remove k-th Last Element From Linked List] ( challenge-38/ )
41
41
- [x] [ Challenge 39: Remove Consecutive Nodes that Sum to 0] ( challenge-39/ )
42
+ - [x] [ Challenge 40: Queue Using Two Stacks] ( challenge-40/ )
Original file line number Diff line number Diff line change
1
+ test :
2
+ python test_* .py
3
+
4
+ .PHONY : test
Original file line number Diff line number Diff line change
1
+ # Queue Using Two Stacks
2
+
3
+ This problem was asked by Apple.
4
+
5
+ ## Description
6
+
7
+ Implement a queue class using two stacks. A queue is a data structure that supports the FIFO protocol (First in = first out). Your class should support the enqueue and dequeue methods like a standard queue.
8
+
9
+ ## Example
10
+ ``` python
11
+ class Queue :
12
+ def __init__ (self ):
13
+ # Fill this in.
14
+
15
+ def enqueue (self , val ):
16
+ # Fill this in.
17
+
18
+ def dequeue (self ):
19
+ # Fill this in.
20
+
21
+ q = Queue()
22
+
23
+ q.enqueue(1 )
24
+ q.enqueue(2 )
25
+ q.enqueue(3 )
26
+
27
+ print q.dequeue() # 1
28
+ print q.dequeue() # 2
29
+ print q.dequeue() # 3
30
+ ```
Original file line number Diff line number Diff line change
1
+ class Queue :
2
+ def __init__ (self ):
3
+ self .main_stack = []
4
+ self .aux_stack = []
5
+
6
+ #
7
+ # Time complexity: O(n)
8
+ #
9
+ def enqueue (self , val ):
10
+ # Move all elements from the main stack
11
+ # to the aux stack
12
+ while self .main_stack :
13
+ self .aux_stack .append (
14
+ self .main_stack .pop ()
15
+ )
16
+
17
+ # Add the element to the inverted stack
18
+ self .aux_stack .append (val )
19
+
20
+ # Move elements back to the main stack
21
+ while self .aux_stack :
22
+ self .main_stack .append (
23
+ self .aux_stack .pop ()
24
+ )
25
+
26
+ #
27
+ # Time complexity: O(1)
28
+ #
29
+ def dequeue (self ):
30
+ return self .main_stack .pop ()
Original file line number Diff line number Diff line change
1
+ import unittest
2
+ from solver import Queue
3
+
4
+ class TestSolver (unittest .TestCase ):
5
+ def test_queue (self ):
6
+ q = Queue ()
7
+
8
+ q .enqueue (1 )
9
+ q .enqueue (2 )
10
+ q .enqueue (3 )
11
+
12
+ self .assertEqual (q .dequeue (), 1 )
13
+ self .assertEqual (q .dequeue (), 2 )
14
+ self .assertEqual (q .dequeue (), 3 )
15
+
16
+ if __name__ == "__main__" :
17
+ unittest .main ()
You can’t perform that action at this time.
0 commit comments