-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy path03.06.go
63 lines (57 loc) · 1.14 KB
/
03.06.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package leetcode
// AnimalShelf ...
type AnimalShelf struct {
cat, dog [][]int
}
// Constructor ...
func Constructor() AnimalShelf {
return AnimalShelf{}
}
// Enqueue ...
func (s *AnimalShelf) Enqueue(animal []int) {
if animal[1] == 0 {
s.cat = append(s.cat, animal)
return
}
s.dog = append(s.dog, animal)
}
// DequeueAny ...
func (s *AnimalShelf) DequeueAny() []int {
ret := []int{-1, -1}
switch {
case len(s.cat) != 0 && len(s.dog) != 0 && s.cat[0][0] > s.dog[0][0]:
ret := s.dog[0]
s.dog = s.dog[1:]
return ret
case len(s.cat) != 0 && len(s.dog) != 0 && s.cat[0][0] < s.dog[0][0]:
ret := s.cat[0]
s.cat = s.cat[1:]
return ret
case len(s.dog) != 0 && len(s.cat) == 0:
ret := s.dog[0]
s.dog = s.dog[1:]
return ret
case len(s.dog) == 0 && len(s.cat) != 0:
ret = s.cat[0]
s.cat = s.cat[1:]
}
return ret
}
// DequeueDog ...
func (s *AnimalShelf) DequeueDog() []int {
ret := []int{-1, -1}
if len(s.dog) != 0 {
ret = s.dog[0]
s.dog = s.dog[1:]
}
return ret
}
// DequeueCat ...
func (s *AnimalShelf) DequeueCat() []int {
ret := []int{-1, -1}
if len(s.cat) != 0 {
ret = s.cat[0]
s.cat = s.cat[1:]
}
return ret
}