队列ADT 像栈一样,队列也是一种表。然而使用队列时插入在一端进行而删除在另一端进行。 队列模型 队列的基本操作是Enquene(入队),它在表的末端插入一个元素,还有Dequene(出队),它是删除在表的开头的元素。 队列的数组形式 如同栈的形式一样,对于队列而言任何表的实现都是合法的。就像栈一样 ...
分类:
其他好文 时间:
2020-01-16 01:21:43
阅读次数:
109
从上往下打印出二叉树的每个节点,同层节点从左至右打印。 思路:就是写一个层序遍历代码,用队列将根、左孩子、右孩子有序入队最后再出队即可 1 import java.util.*; 2 /** 3 public class TreeNode { 4 int val = 0; 5 TreeNode le ...
分类:
其他好文 时间:
2020-01-13 23:37:38
阅读次数:
77
队列 1. 队列的实现 ? 初步设想:列表 + 两个下标指针 ? 创建一个列表和两个变量,front变量指向队首,rear变量指向队尾。初始时,front和rear都为0 ? 进队操作:元素写到li[rear]位置,rear自增1 ? 出队操作:返回li[front]的元素,front自减1 ...
分类:
编程语言 时间:
2020-01-13 09:15:51
阅读次数:
81
前言 JAVA中常用的锁其实是有很多的,但是,一般来说我们常见到的可能就是几种 下面用一个图来简单表示一下 下面来简单介绍一下 一,synchronized synchronized关键字的用法有很多,最常用的可能就是在一个方法上加上这个关键字,然后就锁住了,那么它的原理是什么呢? 我们知道JAVA ...
分类:
编程语言 时间:
2020-01-11 15:27:51
阅读次数:
103
滑动窗口问题 其实就是一个队列,比如例题中的 abcabcbb,进入这个队列(窗口)为 abc 满足题目要求,当再进入 a,队列变成了 abca,这时候不满足要求。所以,我们要移动这个队列! 如何移动? 我们只要把队列的左边的元素移出就行了,直到满足题目要求! 一直维持这样的队列,找出队列出现最长的 ...
分类:
其他好文 时间:
2020-01-08 16:00:30
阅读次数:
84
优先级队列的底层实现是堆(最大堆、最小堆) 堆的特点 1. 完全二叉树 2. 每个节点的值都必须大于等于或小于等于子树中节点的值(对应最大堆、最小堆) 3. 往堆中插入和删除一个元素的时间复杂度都是O(logn) 一、实现 最大堆和最小堆实现原理基本一样,下面实现一个最大堆 输出 二、堆排序 1.每 ...
分类:
其他好文 时间:
2020-01-07 14:44:07
阅读次数:
81
这里使用队列来解决。 因为我们处理的是n个元素里面的第m个元素,如果每次从队列里一边取元素,一边又加到队列的末尾,数到第m的时候,这第m的元素直接出队,不再入队。依此循环n遍,可以按所需顺序移除掉n个元素。 C++代码如下: 1 #include <iostream> 2 #include <std ...
分类:
其他好文 时间:
2020-01-05 13:47:03
阅读次数:
69
队列基本操作 基本操作: push(x) 将x压入队列的末端 pop() 弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值 front() 返回第一个元素(队顶元素) back() 返回最后被压入的元素(队尾元素) empty() 当队列为空时,返回true size() 返回队列的长度 ...
分类:
其他好文 时间:
2020-01-05 11:43:30
阅读次数:
106
题目描述 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如: 给定二叉树: [3,9,20,null,null,15,7] 返回其层次遍历结果 思路分析 1、常规的二叉树层次遍历使用队列,先让根入队,出队访问并判断是否为空,让其左右孩子入队,递归出队。 2、Le ...
分类:
其他好文 时间:
2020-01-03 23:13:14
阅读次数:
69
队列是一种先进先出的数据结构,python中有queue模块来实现队列 数组实现队列: class Queue(): def __init__(self): self.entries = [] #表示队列内的参数 self.length = 0 #表示队列的长度 self.front=0 #表示队列 ...
分类:
其他好文 时间:
2020-01-01 20:30:41
阅读次数:
62