• [Leetcode]设计循环队列


    题目

     

    代码

    class MyCircularQueue {
    public:
        /** Initialize your data structure here. Set the size of the queue to be k. */
        MyCircularQueue(int k):array(k),pre(0),rail(0),numbers(0) {
           
        }
        
        /** Insert an element into the circular queue. Return true if the operation is successful. */
        bool enQueue(int value) {
            if(numbers==array.size())
                return false;
            array[rail]=value;
            rail=(rail+1)%array.size();
            numbers++;
            return true;
        }
        
        /** Delete an element from the circular queue. Return true if the operation is successful. */
        bool deQueue() {
          if(numbers<=0)
              return false;
          pre=(pre+1)%array.size();
          numbers--;
          return true;
        }
        
        /** Get the front item from the queue. */
        int Front() {
            if(isEmpty())
                return -1;
            return array[pre];
        }
        
        /** Get the last item from the queue. */
        int Rear() {
            if(isEmpty())
                return -1;
            int pos=(rail-1+array.size())%array.size();
            std::cout<<"weizhi:"<<abs(pos);
            return array[abs(pos)];
        }
        
        /** Checks whether the circular queue is empty or not. */
        bool isEmpty() {
            if(pre==rail&&numbers==0)
                return true;
            return false;
        }
        
        /** Checks whether the circular queue is full or not. */
        bool isFull() {
            if(numbers==array.size())
                return true;
            return false;
        }
    private:
    
        int numbers;//已经存储的数值
        int pre;
        int rail;
        vector<int> array;
        
    };
    
    /**
     * 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();
     */
  • 相关阅读:
    记一次模型调试问题:使用TextLSTM/RNN学习不动,损失和acc均无变化
    机器学习常用损失函数
    java多线程使用mdc追踪日志
    搜索笔记整理
    pytorch加载bert模型报错
    Transformer源代码解释之PyTorch篇
    matplotlib画图并设置风格
    PyTorch实现断点继续训练
    通过sklearn使用tf-idf提取英文关键词
    通过依存关系生成邻接矩阵
  • 原文地址:https://www.cnblogs.com/lizhenghao126/p/11053569.html
Copyright © 2020-2023  润新知