当前位置: 首页 > news >正文

【LeetCode】622、设计循环队列

【LeetCode】622、设计循环队列

文章目录

  • 一、数组实现循环队列
    • 1.1 队列
  • 二、多语言解法


一、数组实现循环队列

1.1 队列

注意:题目要求了 Front() 和 Rear(),当 IsEmpty() 时返回 -1

// go
type MyCircularQueue struct {
    l int
    r int
    len int
    cap int
    arr []int
}


func Constructor(k int) MyCircularQueue {
    return MyCircularQueue {
        l: 0,
        r: 0,
        len: 0,
        cap: k,
        arr: make([]int, k),
    }
}


func (this *MyCircularQueue) EnQueue(value int) bool {
    if this.len == this.cap {
        return false
    }
    this.len++
    this.arr[this.r]=value
    this.r++
    if this.r == this.cap {
        this.r = 0
    }
    return true
}


func (this *MyCircularQueue) DeQueue() bool {
    if this.len == 0 {
        return false
    }
    this.len--
    this.l++
    if this.l == this.cap {
        this.l = 0
    }
    return true
}


func (this *MyCircularQueue) Front() int {
    if this.IsEmpty() {
        return -1
    }
    return this.arr[this.l]
}


func (this *MyCircularQueue) Rear() int {
    if this.IsEmpty() {
        return -1
    }
    i := this.r-1
    if i == -1 {
        i = this.cap-1
    }
    return this.arr[i]
}


func (this *MyCircularQueue) IsEmpty() bool {
    return this.len == 0
}


func (this *MyCircularQueue) IsFull() bool {
    return this.len == this.cap
}


/**
 * 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();
 */

二、多语言解法

C p p / G o / P y t h o n / R u s t / J s / T s Cpp/Go/Python/Rust/Js/Ts Cpp/Go/Python/Rust/Js/Ts

// cpp
// go 同上
# python
// rust
// js
// ts

相关文章:

  • LuaJIT 学习(4)—— FFI 语义
  • JavaScript进阶篇:二、 对象与面向对象编程
  • 组合Ⅲ 力扣216
  • 卫语句优化多层if else嵌套
  • Typora最新版破解教程
  • 最新版VMware 17.6.3安装包分享
  • 功耗电流和耗电量的获取
  • 大数据 spark hive 总结
  • react(一):特点-基本使用-JSX语法
  • 【大模型(LLMs)RAG 检索增强生成 面经】
  • 【HTML】二、列表、表格
  • 【JAVA】七、基础知识“if+switch+循环结构”详细讲解~简单易懂!
  • Trae:与AI结伴,开启编程新体验
  • springboot438-基于SpringBoot的数字化教学资源管理系统(源码+数据库+纯前后端分离+部署讲解等)
  • 王者荣耀道具页面爬虫(json格式数据)
  • 线程、多线程以及线程池的关系与用法
  • Xinference大模型配置介绍并通过git-lfs、hf-mirror安装
  • 【使用 Java 调用命令行工具:完整指南】
  • Vue 3 Diff 算法深度解析:与 Vue 2 双端比对对比
  • 【机器学习】基于t-SNE的MNIST数据集可视化探索
  • 公司网站建设请示报告/百度快照推广有效果吗
  • 移动端app开发公司/安徽网站关键字优化
  • 珠海网站建设及优化/seo咨询
  • 百度站长社区/网站搜索
  • 泰安网络软件公司/安徽网站seo
  • 做娱乐网站彩票代理/百度广告投放代理商