当前位置: 首页 > 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数据集可视化探索
  • 最高法强化涉新就业形态民事案件审判指导:推动出台司法解释
  • 工业富联一季度净利增长25%,云计算业务营收增长超50%
  • 豆神教育:2024年净利润1.37亿元,同比增长334%
  • 金融街:去年净亏损约110亿元,今年努力实现经营稳健和财务安全
  • 楼下电瓶车起火老夫妻逃生时被烧伤,消防解析躲火避烟注意事项
  • 外卖价格、速度哪家强?记者实测美团、饿了么、京东三大平台