首页 > 编程语言 >【数据结构与算法】队列算法题

【数据结构与算法】队列算法题

时间:2023-07-10 21:01:07浏览次数:39  
标签:console log 队列 dequeue queue enqueue 算法 数据结构 data

TS 实现队列

interface IQueue<T> {
  // 入队
  enqueue(item: T): void;
  // 出队
  dequeue(): T | undefined;
  // 队首
  peek(): T | undefined;
  //是否为空
  isEmpty(): boolean;
  // 大小
  size(): number;
}

class ArrayQueue<T> implements IQueue<T> {
  private data: T[] = [];
  enqueue(item: T): void {
    this.data.push(item);
  }
  dequeue(): T | undefined {
    return this.data.shift();
  }
  peek(): T | undefined {
    return this.data[0];
  }
  isEmpty(): boolean {
    return this.data.length === 0;
  }
  size(): number {
    return this.data.length;
  }
}
// 测试用例
const queue = new ArrayQueue<number>();
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
console.log(queue.size()); // 3
console.log(queue.peek()); // 1
console.log(queue.dequeue()); // 1
console.log(queue.size()); // 2
console.log(queue.isEmpty()); // false
console.log(queue.dequeue()); // 2
console.log(queue.dequeue()); // 3
console.log(queue.isEmpty()); // true

export default ArrayQueue;

标签:console,log,队列,dequeue,queue,enqueue,算法,数据结构,data
From: https://www.cnblogs.com/wx980416/p/17542326.html

相关文章

  • 【数据结构与算法】栈相关算法题(长期更新)
    TS实现栈interfaceIStack<T>{push(e:T):void;pop():T|undefined;peek():T;isEmpyt():boolean;size():number;}//implements:实现接口,一个类可以实现多个接口classArrayStack<T>implementsIStack<T>{privatedata:T[]=[];//pri......
  • 「学习笔记」KMP 算法
    前置知识前缀是指从串首开始到某个位置\(i\)结束的一个特殊子串.真前缀指除了\(S\)本身的\(S\)的前缀.举例来说,字符串abcabeda的所有前缀为{a,ab,abc,abca,abcab,abcabe,abcabed,abcabeda},而它的真前缀为{a,ab,abc,abca,abcab,abcabe,abcabed}.......
  • 算法细节系列(1):Java swap
    算法细节系列(1):Javaswap问题在C++中,swap算法可以用指针来实现,因此在Java中,如果采用如下代码来对两个数字进行交换时,也不会影响两个对象的值。publicclassTestSwap{publicstaticvoidmain(String[]args){inta=2;intb=3;System.out.prin......
  • 文心一言 VS 讯飞星火 VS chatgpt (57)-- 算法导论6.4 1题
    文心一言VS讯飞星火VSchatgpt(57)--算法导论6.41题一、参照图6-4的方法,说明HEAPSORT在数组A=(5,13,2,25,7,17,20,8,4)上的操作过程。文心一言:下面是HEAPSORT在数组A=(5,13,2,25,7,17,20,8,4)上的操作过程:调用BUILD-MAX-HEAP函数,将数组A转换为最大堆。将堆顶元......
  • Lamps(STL+双端队列)
     Lamps题面翻译有$n$盏灯,每盏灯有不亮,亮,坏掉3种状态。一开始每盏灯都不亮。第$i$盏灯有属性$a_i,b_i$。每次操作你可以选择一盏灭的灯将其点亮,并得到$b_i$的分数。每次操作结束后,记有$x$盏灯亮着,则所有$a_i\lex$的灯$i$都会损坏(无论是否亮着)。求能得到的最......
  • MQ消息队列
    1、消息队列应用场景消息队列,指保存消息的一个容器,本质是个队列。异步处理,主要目的是减少请求响应时间;应用解耦,使用消息队列后,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系;流量削峰,秒杀活动中,系统峰值流量往往集中于一小段时间,消息队列作为缓冲,可以削弱峰值流......
  • c#实现SharedMatting抠图算法
    内容简介      将AlphaMatting抠图算法由c++版本移植至c#环境。主要采用OpenCV的C#版本Emgu取代c++支撑的OpenCV。 参考资料http://www.inf.ufrgs.br/~eslgastal/SharedMatting/这个网页是算法的论文介绍页,可以从该网页下载到论文原文以及测试用图以及linux下的De......
  • 图解算法数据结构
    算法复杂度1.算法复杂度旨在输入数据量N的情况下,算法的时间和空间使用情况,体现算法运行使用的时间和空间随数据大小N而增大的速度。 算法复杂度主要可以从时间,空间两个角度评价:时间:假设各操作的运行时间为固定常数,统计算法运行的计算操作的数量,以代表算法运行所需时间......
  • 使用加密算法时报错:ModuleNotFoundError: No module named ‘Crypto‘
    解决办法:安装Crypto模块,执行 pipinstallCrypto ,安装成功后,再执行命令,还是报上面的错误第一步:在python3(或者python虚拟环境)目录下的/Lib/site-packages/目录下找到crypto、crypto-1.4.1.dist-info目录,将crypto首字母改为大写,即修改名称为Crypto、Crypto-1.4.1.d......
  • python图片去重复算法
    importosfromimagededup.methodsimportPHash#pipinstallimagededupphasher=PHash()defprocess_file(img_path):#生成图像目录中所有图像的二值hash编码encodings=phasher.encode_images(image_dir=img_path)duplicates=phasher.find_duplica......