Go Rust解题——使用[ ]int 固定长度数组实现循环队列
作者:互联网
题目
题解
rust 设计循环队列
设计循环队列 - 提交记录 - 力扣(LeetCode)
go 设计循环队列
设计循环队列 - 提交记录 - 力扣(LeetCode)
解题思路
使用[ ]int 固定长度数组实现循环队列
- 注意保留一个空位,方便后续实现。
- 长度 是可选项。
- 重点是 isEmpty 和 isFull 两个函数的判断逻辑。
代码
type MyCircularQueue struct {
Head, Tail int
Queue []int
Length,size int
}
func Constructor(k int) MyCircularQueue {
return MyCircularQueue{
Head:0,
Tail:0,
Queue: make([]int,k+1,k+1),
Length:0,
size: k+1,
}
}
func (this *MyCircularQueue) EnQueue(value int) bool {
if this.IsFull() {
return false
}
this.Queue[this.Tail]= value
this.Tail = (this.Tail + 1 + this.size) % this.size
this.Length += 1
return true
}
func (this *MyCircularQueue) DeQueue() bool {
if this.IsEmpty() {
return false
}
this.Head = (this.Head+1+this.size)%this.size
this.Length -= 1
return true
}
func (this *MyCircularQueue) Front() int {
if this.IsEmpty(){
return -1
}
return this.Queue[this.Head]
}
func (this *MyCircularQueue) Rear() int {
if this.IsEmpty(){
return -1
}
return this.Queue[ (this.Tail-1+this.size)%this.size ]
}
func (this *MyCircularQueue) IsEmpty() bool {
return this.Head == this.Tail
}
func (this *MyCircularQueue) IsFull() bool {
if (this.Tail + 1)%this.size == this.Head {
return true
}
return false
}
/**
* Your MyCircularQueue object will be instantiated and called as such:
* obj := Constructor(k);
* param_1 := obj.EnQueue(value);
* param_2 := obj.DeQueue();
* param_3 := obj.Front();
* param_4 := obj.Rear();
* param_5 := obj.IsEmpty();
* param_6 := obj.IsFull();
*/
标签:Head,return,int,MyCircularQueue,Tail,Go,Rust,size 来源: https://blog.csdn.net/panda_8/article/details/117856951