原题链接 题解 可以直接使用一个queue直接解决,在进行push()操作的时候,当我们每插入一个元素,都要保证我们新插入的元素要在队头,这就要每一次插入的时候进行队列的反转,因为从开始插入的时候就反转,所以我们新插入的元素的前面的元素都是符合要求的(即后面插入的数据比前面插入的数据在队列的前面), ...
分类:
其他好文 时间:
2020-07-19 00:51:50
阅读次数:
75
题目的要求,大白话说就是:把指针指向同层的右侧节点 提到同层,自然就要想到层序遍历,自然是队列实现 问题是需要分层 所以采用之前题目用的那种计数的方式 class Solution { public Node connect(Node root) { if(root==null) {return r ...
分类:
其他好文 时间:
2020-07-13 18:42:31
阅读次数:
79
一道队列广搜题 此题使用队列实现,现将初始状态加入到空的队列当中;然后每次取出对首,找出队首所能转移到的状态,再将其压入队列;如此反复,这样就能保证一个状态在被访问的时候一定是采用的最短路径。 广度优先搜索的一般形式 这里是使用队列实现广度优先搜索的一般形式: Q.push(初始状态);//将初始状 ...
分类:
其他好文 时间:
2020-07-06 10:32:54
阅读次数:
62
实现类:ArrayDeque和LinkedList 作用:Deque既可以做栈使用也可以做队列使用; 缺点:Deque违背了单一职责性原则 ArrayDeque: ArrayDeque是Deque接口的一种具体实现,是依赖于可变数组来实现的。ArrayDeque 没有容量限制,可根据需求自动进行扩容 ...
分类:
其他好文 时间:
2020-06-30 17:27:23
阅读次数:
61
list实现, 头插带头结点的单链表实现链栈,两个队列实现栈 MAX_SIZE = 100 class MyStack1(object): """模拟栈""" def __init__(self): self.items = [] self.size = 0 def is_empty(self): ...
分类:
编程语言 时间:
2020-06-29 20:07:08
阅读次数:
65
阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。 这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当 队列满时,存储元素的线程会等待队列可用。 阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消 费者是从队列里拿元素的线程。阻塞队列就是生产 ...
分类:
其他好文 时间:
2020-06-21 16:04:43
阅读次数:
78
在 java 中守护线程和本地线程区别 java 中的线程分为两种:守护线程(Daemon)和用户线程(User)。任何线程都可以设置为守护线程和用户线程,通过方法 Thread.setDaemon(boolon);true 则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemo ...
分类:
其他好文 时间:
2020-06-13 17:09:53
阅读次数:
45
抽象数据类型 列表、栈、队列 实现数据结构 是否重复有序 不同的链表 单链表、双端链表、双端双向链表 LinkedList、ArrayList 大小固定,有下标 插入删除,效率都是O(N) add、remove、contains、indexof ArrayList、Vector 默认容量 10 默认 ...
分类:
其他好文 时间:
2020-06-11 21:54:26
阅读次数:
87
目录 一、背景 二、概念 2.1 栈 2.2 队列 三、栈和队列的相互实现 3.1 用队列实现栈 3.2 用栈实现队列 四、总结 一、背景 栈和队列是数据结构中最常用到的两种结构,有非常广泛的运用,该篇文章将通过动画的手段,展示栈和队列相互实现的底层原理,让我们真正搞懂栈和队列的特性。 二、概念 2 ...
分类:
其他好文 时间:
2020-06-10 09:21:44
阅读次数:
82
一、背景 栈和队列是数据结构中最常用到的两种结构,有非常广泛的运用,该篇文章将通过动画的手段,展示栈和队列相互实现的底层原理,让我们真正搞懂栈和队列的特性。 二、概念 2.1 栈 栈[Stack]:是一种限定仅在表尾进行插入和删除操作的线性表;即后进先出(LIFO-last in first out ...
分类:
其他好文 时间:
2020-06-09 18:34:08
阅读次数:
68