首页 > 其他分享 >双端队列简单实现

双端队列简单实现

时间:2022-08-15 10:02:35浏览次数:51  
标签:capacity 队列 双端 int 简单 front return public rear

  1. 设计循环双端队列
class MyCircularDeque {
    private int[] elements;
    private int rear, front;
    private int capacity;

    public MyCircularDeque(int k) {
        capacity = k + 1;
        rear = front = 0;
        elements = new int[k + 1];
    }

    public boolean insertFront(int value) {
        if (isFull()) {
            return false;
        }
        front = (front - 1 + capacity) % capacity;
        elements[front] = value;
        return true;
    }

    public boolean insertLast(int value) {
        if (isFull()) {
            return false;
        }
        elements[rear] = value;
        rear = (rear + 1) % capacity;
        return true;
    }

    public boolean deleteFront() {
        if (isEmpty()) {
            return false;
        }
        front = (front + 1) % capacity;
        return true;
    }

    public boolean deleteLast() {
        if (isEmpty()) {
            return false;
        }
        rear = (rear - 1 + capacity) % capacity;
        return true;
    }

    public int getFront() {
        if (isEmpty()) {
            return -1;
        }
        return elements[front];
    }

    public int getRear() {
        if (isEmpty()) {
            return -1;
        }
        return elements[(rear - 1 + capacity) % capacity];
    }

    public boolean isEmpty() {
        return rear == front;
    }

    public boolean isFull() {
        return (rear + 1) % capacity == front;
    }
}

标签:capacity,队列,双端,int,简单,front,return,public,rear
From: https://www.cnblogs.com/yury757/p/16587204.html

相关文章

  • nginx 一些简单访问控制模块
    nginx已经内置了一些简单的访问控制模块,利用好这些模块我们可以提升系统的安全几个比较有用的标准模块基本都是利用了access阶段的能力limit_except限制请求方法的(......
  • 24第四章:09_死信队列
    一、什么是死信队列当一条消息初次消费失败,消息队列会自动进行消费重试;达到最大重试次数后,若消费依然失败,则表明消费者在正常情况下无法正确地消费该消息,此时,消息队列不会......
  • 最简单的不发光(unlit)shader
    #功能就是原样显示一张贴图Shader"Unlit/NewUnlitShader"{Properties{_MainTex("Texture",2D)="white"{}}SubShader{......
  • 逆向 | inlinehook 简单实践
    逆向|inlinehook简单实践好久之前就学过了,结果代码找不到了,今儿留个档。总结一下就是:整个被注入的dll,在里头进行hook的操作整个exe来注入上面那个dll代码如下:测......
  • JDK数组阻塞队列源码深入剖析
    JDK数组阻塞队列源码深入剖析前言在前面一篇文章从零开始自己动手写阻塞队列当中我们仔细介绍了阻塞队列提供给我们的功能,以及他的实现原理,并且基于谈到的内容我们自己实......
  • Java基础的简单应用
    packagecom.zhou.partise;importjava.util.Scanner;publicclassTest01{publicstaticvoidmain(String[]args){//写一个计算器,要求实现加减乘除功能,并......
  • C++ while/for循环的简单应用 1到100相加
    1.while循环:#include<iostream>usingnamespacestd;intmain(){intb=1;intsum=0;while(b<101){sum+=b;b++;......
  • NC17193 简单瞎搞题
    题目链接题目题目描述一共有n个数,第i个数是xixi可以取[li,ri]中任意的一个值。设\(S=\sum{{x_i}^2}\),求S种类数。输入描述第一行一个数n。然后n......
  • C++ while循环的简单易用 输入正确的账号密码
    #include<iostream>usingnamespacestd;intmain(){stringname;stringpwd;while(1){system("cls");cout<<"请输入账号:......
  • go搭建简单grpc服务(登录服务)2-增加proto字段,md5验签
    上一篇随笔搭建一个简单的登录grpc服务,但还有一些需要完善,这篇随笔主要介绍proto文件增加字段流程md5签名 当前文件目录结构如下:  修改pb/users/login.proto,......