【Queue】

先进先出(First-In-First-Out),LinkedList实现了Queue接口。它只允许在表的前端进行删除操作,而在表的后端进行插入操作。

add()       增加一个元索                     如果队列已满,则抛出一个IIIegaISlabEepeplian异常
remove()   移除并返回队列头部的元素    如果队列为空,则抛出一个NoSuchElementException异常
element()  返回队列头部的元素             如果队列为空,则抛出一个NoSuchElementException异常
offer()       添加一个元素并返回true       如果队列已满,则返回false
poll()         移除并返问队列头部的元素    如果队列为空,则返回null
peek()       返回队列头部的元素             如果队列为空,则返回null
put()        添加一个元素                      如果队列满,则阻塞
take()        移除并返回队列头部的元素     如果队列为空,则阻塞

boolean isEmpty() 判断队列是否为空

size() 返回队列长度

时间复杂度分析:

O(1) Push / O(1) Pop / O(1) Top

PriorityQueue

默认为最小堆,可以用比较器构造最大堆

PriorityQueue<Integer> maxHeap = new PriorityQueue<>(k, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});

【Stack】

boolean empty() 测试堆栈是否为空。

Object peek() 查看堆栈顶部的对象,但不从堆栈中移除它。

Object push() 移除堆栈顶部的对象,并作为此函数的值返回该对象。

Object pop() 把项压入堆栈顶部。

时间复杂度:

O(1) Push / O(1) Pop / O(1) Top

【Heap】

Heap 是一种二叉树(binary tree), 说得再准确一点, 它是一种完全二叉树(complete binary tree)。

对于一个完全二叉树, 没有必要用常规的树结构(使用指针)来表示, 因为如果从上到下走过每层(每层内从左到右)给所有节点编号。(根节点的编号为0)的话, 完全二叉树有以下特征:father(i) = i/2 其中father(i)表示编号为i的节点的父节点的下标;leftchild(i) = i*2+1, rightchild(i) = i*2+2。所以使用数组就可以进行存储。

最小堆:父结点的值小于两个左右结点的值;最大堆:父结点的值大于两个左右结点的值。

复杂度总结:

add - O(logN)

poll - O(logN)

top - O(1)

刷题upupup【Java中Queue、Stack、Heap用法总结】的更多相关文章

  1. 牛客网刷题(纯java题型 31~60题)

    牛客网刷题(纯java题型 31~60题) 重写Override应该满足"三同一大一小"三同:方法名相同,参数列表相同,返回值相同或者子类的返回值是父类的子类(这一点是经过验证的) ...

  2. 牛客网刷题(纯java题型 1~30题)

    牛客网刷题(纯java题型 1~30题) 应该是先extend,然后implement class test extends A implements B { public static void m ...

  3. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  4. Java中Date各种相关用法

    Java中Date各种相关用法(一) 1.计算某一月份的最大天数 Java代码 Calendar time=Calendar.getInstance(); time.clear(); time.set ...

  5. JAVA中enum的常见用法

    JAVA中enum的常见用法包括:定义并添加方法.switch.遍历.EnumSet.EnumMap 1.定义enum并添加或覆盖方法 public Interface Behaviour{ void ...

  6. 巨人大哥谈Java中的Synchronized关键字用法

    巨人大哥谈Java中的Synchronized关键字用法 认识synchronized 对于写多线程程序的人来说,经常碰到的就是并发问题,对于容易出现并发问题的地方价格synchronized基本上就 ...

  7. Java中Class类及用法

    Java中Class类及用法 Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识,即所谓的RTTI.这项信息纪录了每个对象所属的类.虚拟机通常使用运行时类型信息选准正确方 ...

  8. JAVA中mark()和reset()用法

    根据JAVA官方文档的描述,mark(int readlimit)方法表示,标记当前位置,并保证在mark以后最多可以读取readlimit字节数据,mark标记仍有效.如果在mark后读取超过rea ...

  9. java中class,public的用法

    java中class,public的用法 一.Java访问权限饰词(access specifiers) Java有public.protect.friendly.private四种访问权限,并且这四 ...

  10. java中堆栈(stack)和堆(heap)(还在问静态变量放哪里,局部变量放哪里,静态区在哪里.....进来)

    (1)内存分配的策略 按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的. 静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编 译时就可以给 ...

随机推荐

  1. eclipse导出maven工程的可执行jar包

    一.eclipse导出maven工程的可执行jar包 建立两个maven工程 ZKServer 和ZKClient 注意:用maven进行开发管理的话,默认的打出来的jar包是不能运行的,需要在pom ...

  2. 第三方jar包上传私服和项目使用

    下面只做个人日志记录,勿喜勿喷 使用两个浏览器,带着下面的问题去看:https://www.cnblogs.com/tyhj-zxp/p/7605879.html.就会清晰了 1.下载和安装nexus ...

  3. 大量的rcuob进程

    环境: OS:Centos 7 问题,今天采购了一台dell R430机器,启动发现大量的如下进程[root@localhost opt]# toptop - 02:07:57 up 6:39, 2 ...

  4. 使用littleTools简化docker/kubectl的命令

    littleTools littleTools是我根据日常运维时编写的一个小工具,开源在了https://github.com/xuxinkun/littleTools上. littleTools包含 ...

  5. loj 6008 餐巾计划 - 费用流

    题目传送门 传送门 题目大意 (经典题还不知道题意?) 容易想到需要把未使用的餐巾和已经使用的餐巾分开. 设$X_i$表示第$i$天已经的使用餐巾的点,设$Y_i$表示第$i$天还未使用的餐巾的点 我 ...

  6. uni-app编写小程序

    今天项目还没有开始开发,网上看到了uni-app官网介绍可以一套代码,多端使用,感觉很厉害的样子,就做了个小程序页面试试. uni-app 使用 vue语法,小程序api,内嵌mpvue,使我们能够很 ...

  7. Java程序设计第三次作业

    编写“学生”类及其测试类. 5.1 “学生”类: 类名:Student 属性:姓名.性别.年龄.学号.5门课程的成绩 方法1:在控制台输出各个属性的值. 方法2:计算平均成绩 方法3:输出各个属性的值 ...

  8. cookie的认识

    cookie 概念和术语cookie,字面意思是“饼干”,源自魔术cookie(魔术cookie),这种技术已经在80年代的UNIX环境中已知并且通常用于在服务器上实现客户端的识别机制,例如例如X W ...

  9. git遇到error: RPC failed; curl 18 transfer closed with outstanding read data remaining fatal: The remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed failed怎么办?

    答: 将clone地址中的https://替换成git://即可解决 如: 将https://git.openwrt.org/project/luci.git修改为git://git.openwrt. ...

  10. Error creating bean

    问题原因 Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: bookinfo is not mapped,sql语句中的表 ...