|
| 1 | +package main |
| 2 | + |
1 | 3 | import (
|
2 |
| - "testing" |
3 |
| - "github.com/stretchr/testify/assert" |
| 4 | + "github.com/stretchr/testify/assert" |
| 5 | + "testing" |
4 | 6 | )
|
5 | 7 |
|
6 | 8 | type Deque struct {
|
7 |
| - Store []int |
| 9 | + Store []int |
8 | 10 | }
|
9 | 11 |
|
10 | 12 | // Time complexity: O(1)
|
11 | 13 | func (deque *Deque) RPush(element int) {
|
12 |
| - deque.Store = append(deque.Store, element) |
| 14 | + deque.Store = append(deque.Store, element) |
13 | 15 | }
|
14 | 16 |
|
15 | 17 | // Time complexity: O(n)
|
16 | 18 | func (deque *Deque) LPush(element int) {
|
17 |
| - deque.Store = append([]int{element}, deque.Store...) |
| 19 | + deque.Store = append([]int{element}, deque.Store...) |
18 | 20 | }
|
19 | 21 |
|
20 | 22 | // Time complexity: O(1)
|
21 | 23 | func (deque *Deque) RPop() *int {
|
22 |
| - if len(deque.Store) == 0 { |
23 |
| - return nil |
24 |
| - } |
| 24 | + if len(deque.Store) == 0 { |
| 25 | + return nil |
| 26 | + } |
25 | 27 |
|
26 |
| - element := deque.Store[len(deque.Store) - 1] |
27 |
| - deque.Store = deque.Store[:len(deque.Store) - 1] |
| 28 | + element := deque.Store[len(deque.Store)-1] |
| 29 | + deque.Store = deque.Store[:len(deque.Store)-1] |
28 | 30 |
|
29 |
| - return &element |
| 31 | + return &element |
30 | 32 | }
|
31 | 33 |
|
32 | 34 | // Time complexity: O(n)
|
33 | 35 | func (deque *Deque) LPop() *int {
|
34 |
| - if len(deque.Store) == 0 { |
35 |
| - return nil |
36 |
| - } |
| 36 | + if len(deque.Store) == 0 { |
| 37 | + return nil |
| 38 | + } |
37 | 39 |
|
38 |
| - element := deque.Store[0] |
39 |
| - deque.Store = deque.Store[1:] |
| 40 | + element := deque.Store[0] |
| 41 | + deque.Store = deque.Store[1:] |
40 | 42 |
|
41 |
| - return &element |
| 43 | + return &element |
42 | 44 | }
|
43 | 45 |
|
44 | 46 | func TestDeque(t *testing.T) {
|
45 |
| - deque := Deque{} |
| 47 | + deque := Deque{} |
46 | 48 |
|
47 |
| - deque.RPush(1) |
48 |
| - deque.RPush(2) |
49 |
| - deque.RPush(3) |
| 49 | + deque.RPush(1) |
| 50 | + deque.RPush(2) |
| 51 | + deque.RPush(3) |
50 | 52 |
|
51 |
| - assert.Equal(t, 3, *deque.RPop()) |
52 |
| - assert.Equal(t, 2, *deque.RPop()) |
53 |
| - assert.Equal(t, 1, *deque.RPop()) |
54 |
| - assert.Nil(t, deque.RPop()) |
| 53 | + assert.Equal(t, 3, *deque.RPop()) |
| 54 | + assert.Equal(t, 2, *deque.RPop()) |
| 55 | + assert.Equal(t, 1, *deque.RPop()) |
| 56 | + assert.Nil(t, deque.RPop()) |
55 | 57 |
|
56 |
| - deque.LPush(1) |
57 |
| - deque.LPush(2) |
58 |
| - deque.LPush(3) |
| 58 | + deque.LPush(1) |
| 59 | + deque.LPush(2) |
| 60 | + deque.LPush(3) |
59 | 61 |
|
60 |
| - assert.Equal(t, 1, *deque.RPop()) |
61 |
| - assert.Equal(t, 2, *deque.RPop()) |
62 |
| - assert.Equal(t, 3, *deque.RPop()) |
63 |
| - assert.Nil(t, deque.RPop()) |
| 62 | + assert.Equal(t, 1, *deque.RPop()) |
| 63 | + assert.Equal(t, 2, *deque.RPop()) |
| 64 | + assert.Equal(t, 3, *deque.RPop()) |
| 65 | + assert.Nil(t, deque.RPop()) |
64 | 66 | }
|
0 commit comments