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

leetcode 622.设计循环队列

1.题目要求:
在这里插入图片描述
示例:

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

2.题目代码:

class MyCircularQueue {
public:
    int front;
    int rear;
    vector<int> queue;
    /初始化
    MyCircularQueue(int k) {
        queue.resize(k + 1);
        front = rear = 0;
    }
    //入队
    bool enQueue(int value) {
        if(isFull() == true){
            return false;
        }else{
            queue[rear] = value;
            rear = (rear + 1) % queue.size();
            return true;
        }
    }
    //出队
    bool deQueue() {
        if(isEmpty() == true){
            return false;
        }else{
            front = (front + 1) % queue.size();
            return true;
        }
    }
    //找到首元素的值
    int Front() {
        if(isEmpty() == true){
            return -1;
        }else{
            return queue[front];
        }
    }
    //找到末尾值
    int Rear() {
        if(isEmpty() == true){
            return -1;
        }else{
            if(rear == 0){
                return queue[queue.size() - 1];
            }
            return queue[rear - 1];
        }
        
    }
    //判断是否为空
    bool isEmpty() {
        if(front == rear){
            return true;
        }else{
            return false;
        }
    }
    //判断是否已满
    bool isFull() {
        if((rear + 1) % queue.size() == (front) % queue.size()){
            return true;
        }else{
            return false;
        }
    }
};

/**
 * Your MyCircularQueue object will be instantiated and called as such:
 * MyCircularQueue* obj = new MyCircularQueue(k);
 * bool param_1 = obj->enQueue(value);
 * bool param_2 = obj->deQueue();
 * int param_3 = obj->Front();
 * int param_4 = obj->Rear();
 * bool param_5 = obj->isEmpty();
 * bool param_6 = obj->isFull();
 */

http://www.kler.cn/a/384144.html

相关文章:

  • 【前端基础】CSS基础
  • Sigrity Power SI 3D-EM Inductance Extraction模式如何进行电感的提取操作指导(一)
  • Pandas 数据分析工具详细教程
  • token加密的算法,MD5加密方法的封装
  • ReactPress系列—Next.js 的动态路由使用介绍
  • luogu P2196
  • DeBiFormer实战:使用DeBiFormer实现图像分类任务(二)
  • 高级 SQL 技巧详解
  • MDC(重要)
  • 物联网核心安全系列——物联网安全需求
  • 100种算法【Python版】第37篇—— Jarvis March算法
  • 快速上手vue3+js+Node.js
  • 实践出真知:MVEL表达式empty的坑
  • vue中html如何转成pdf下载,pdf转base64,忽略某个元素渲染在pdf中,方法封装
  • 【Python爬虫实战】DrissionPage 与 ChromiumPage:高效网页自动化与数据抓取的双利器
  • 【AI】【提高认知】卷积神经网络:从LeNet到AI淘金热的深度学习之旅
  • 一、数据操作
  • 5G NR物理层|5G PHY层概述
  • 【SpringCloud】Nacos微服务注册中心
  • 【LeetCode】【算法】416. 分割等和子集
  • STM32F1 LL 库和HAL 库在GPIO 上的区别
  • 从0开始学习机器学习--Day13--神经网络如何处理复杂非线性函数
  • 【JavaEE】常见锁策略、CAS
  • python --03 (数据类型)
  • 【持续更新】【NLP项目】【自然语言处理】智能聊天机器人——“有问必答”【Chatbot】第2章、《模式一:问候模式》
  • Qt——窗口