美文网首页精英内训
算法14(力扣622)设置循环队列

算法14(力扣622)设置循环队列

作者: 许文雅 | 来源:发表于2025-02-07 21:34 被阅读0次

1、问题

设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。

循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。

你的实现应该支持如下操作:

MyCircularQueue(k): 构造器,设置队列长度为 k 。

Front: 从队首获取元素。如果队列为空,返回 -1 。

Rear: 获取队尾元素。如果队列为空,返回 -1 。

enQueue(value): 向循环队列插入一个元素。如果成功插入则返回真。

deQueue(): 从循环队列中删除一个元素。如果成功删除则返回真。

isEmpty(): 检查循环队列是否为空。

isFull(): 检查循环队列是否已满。

2、示例

MyCircularQueue circularQueue = new MyCircularQueue(3); // 设置长度为 3

circularQueue.enQueue(1);  // 返回 true

circularQueue.enQueue(2);  // 返回 true

circularQueue.enQueue(3);  // 返回 true

circularQueue.enQueue(4);  // 返回 false,队列已满

circularQueue.Rear();  // 返回 3

circularQueue.isFull();  // 返回 true

circularQueue.deQueue();  // 返回 true

circularQueue.enQueue(4);  // 返回 true

circularQueue.Rear();  // 返回 4

3、理解题意

        题意:利用数组实现循环队列的一下方法

4、具体步骤

(1)数组构建循环队列需要哪些元素?数组queue、头指针front、尾指针rear、capacity队列最大容量、size队列中当前元素数量

(2)判断队列是否为空,直接判断当前元素size是否为0

(3)判断队是否满,直接判断当前元素数size是否和队列的最大长度相同

(4)插入:

        1)判断队满,满则返回。

        2)判断队空?空,头指针前移:非空,尾指针前移,插入,当前元素数+1

(5)删除

        1)判空?空,返回:非空(最后一个元素?是,重置头、尾指针:否,头指针前移,当前元素-1)

(6)从队首获取元素

        1)判空?空,返回-1:非空,返回头指针指向的元素

(7)从队尾获取元素

        1)空?空,返回-1:非空,返回尾指针指向的元素

相关文章

  • 力扣 622 设计循环队列

    题意:构建循环队列 思路:用一个双向node 构建循环队列 思想:双向链表 复杂度:时间O(1),空间O(n)

  • LeetCode 622. 设计循环队列

    622. 设计循环队列 设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原...

  • leetcode641.设计循环双端队列

    题目链接 题解: 类似的题目为:leetcode622题设计循环队列,622题的 题解 先附上。本题和622题是一...

  • leetcode链表之设计循环队列

    622、设计循环队列[https://leetcode-cn.com/problems/design-circul...

  • 622 设计循环队列

    题目描述: 设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被...

  • LeetCode 622——设计循环队列

    1. 题目 设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被...

  • [Leetcode 622]设计循环队列

    设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之...

  • leetcode 622 循环队列设计

    要求:设计实现循环队列循环队列定义:队尾指向队首;构造:设置一个长度为k的循环队列;要求的操作:取队首队尾/插入/...

  • 数据结构入门——大师:queue(二) LoopQueue

    1.什么是循环队列 由于队列会出队入队,因此我们需要利用好队列出队的空间,因此我们需要设置循环队列 2.循环队列的...

  • Leetcode622. 设计循环队列

    题目 设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在...

网友评论

    本文标题:算法14(力扣622)设置循环队列

    本文链接:https://www.haomeiwen.com/subject/bcvaujtx.html