zoukankan      html  css  js  c++  java
  • 刷题upupup【Java中Queue、Stack、Heap用法总结】

    【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)

  • 相关阅读:
    P2567 [SCOI2010]幸运数字 DFS+容斥定理
    Codeforces Round #462 (Div. 2) C DP
    Codeforces Round #428 (Div. 2) C. dfs
    POJ 2079 最大三角形面积(凸包)
    POJ 3608 凸包间最短距离(旋转卡壳)
    2018年全国多校算法寒假训练
    Educational Codeforces Round 37 E. Connected Components?(图论)
    UVa 1440:Inspection(带下界的最小流)***
    BZOJ 1483:[HNOI2009]梦幻布丁(链表启发式合并)
    PAT L3-016:二叉搜索树的结构(暴力)
  • 原文地址:https://www.cnblogs.com/yidansheng/p/8255991.html
Copyright © 2011-2022 走看看