forked from doocs/leetcode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSolution.go
49 lines (41 loc) · 787 Bytes
/
Solution.go
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
type FrontMiddleBackQueue struct{}
var a []int
func Constructor() (_ FrontMiddleBackQueue) {
a = nil
return
}
func (FrontMiddleBackQueue) PushFront(v int) {
a = append([]int{v}, a...)
}
func (FrontMiddleBackQueue) PushMiddle(v int) {
p := len(a) / 2
a = append(a[:p], append([]int{v}, a[p:]...)...)
}
func (FrontMiddleBackQueue) PushBack(v int) {
a = append(a, v)
}
func (FrontMiddleBackQueue) PopFront() (ans int) {
if len(a) == 0 {
return -1
}
ans = a[0]
a = a[1:]
return
}
func (FrontMiddleBackQueue) PopMiddle() (ans int) {
if len(a) == 0 {
return -1
}
p := (len(a) - 1) / 2
ans = a[p]
a = append(a[:p], a[p+1:]...)
return
}
func (FrontMiddleBackQueue) PopBack() (ans int) {
if len(a) == 0 {
return -1
}
ans = a[len(a)-1]
a = a[:len(a)-1]
return
}