方法一: 我自己的方法,建一个stack,每遇到数字就推进栈里,每遇到#,就弹出一个数字,最后栈里必须剩一个#。 时间复杂度是O(n) 2. 别人的方法 每一个数字可以有两条发出的边,每个#会占用一条边,每一个数字自己本身会占用一个边,但是又会产生两个边,所以维持一个计数,一旦小于0就返回false ...
分类:
其他好文 时间:
2016-07-07 13:10:40
阅读次数:
144
方法一: 我自己的方法,建一个stack,每遇到数字就推进栈里,每遇到#,就弹出一个数字,最后栈里必须剩一个#。 时间复杂度是O(n) 2. 别人的方法 每一个数字可以有两条发出的边,每个#会占用一条边,每一个数字自己本身会占用一个边,但是又会产生两个边,所以维持一个计数,一旦小于0就返回false ...
分类:
其他好文 时间:
2016-07-07 12:46:48
阅读次数:
97
题目大意:对树进行m次操作,有两类操作,一种是改变一个点的权值(将0变为1,1变为0),另一种为查询以x为根节点的子树点权值之和,开始时所有点权值为1。 分析: 对树进行dfs,将树变为序列,记录每个点进栈出栈的时间戳作为其对应区间的左右端点,那么其子节点对应区间必在该区间内,对这段区间求和即可,用 ...
分类:
移动开发 时间:
2016-07-05 22:07:50
阅读次数:
212
4.栈和队列栈(stack),是仅限定在表尾进行插入和删除操作的线性表 (一种特殊的线性表,有前驱后继关系)我们把允许插入和删除的一端称为栈顶,另一端称为栈底,不含任何元素的称为空栈,栈又称为先进后出的线性表简称LIFO结构先进后出,后进先出,最先进栈的元素不一定最后出,因为栈对元素的删除和增加位置 ...
分类:
其他好文 时间:
2016-07-04 18:33:50
阅读次数:
102
栈 栈是只能在某一端插入和删除的特殊线性表。 用桶堆积物品,先堆进来的压在底下,随后一件一件往上堆。取走时,只能从上面一件一件取。堆和取都在顶部进行,底部一般是不动的。 栈就是一种类似桶堆积物品的数据结构,进行删除和插入的一端称栈顶,另一端称栈底。插入一般称为进栈(PUSH),删除则称为退栈(POP ...
分类:
其他好文 时间:
2016-06-25 19:03:03
阅读次数:
136
1. 后缀表达式计算结果 (1) 规则 从左到右遍历表达式的每个数字和符号,遇到是数字就进栈,遇到是符号,就将处于栈顶的两个数字出栈,运算结果进栈,一直到最终获得结果。 (2) 示例 后缀表达式:9 3 1 - 3 * + 10 2 / + 2. 中缀表达式转后缀表达式 (1) 规则 从左到右遍历中 ...
分类:
其他好文 时间:
2016-06-15 01:37:01
阅读次数:
170
队列:只能一端进行出栈一端进行进栈。 队首:只允许进行出栈操作,可以进行删除。 队尾:只允许进行入栈操作,可以进行插入。 队尾进,队尾出,先进先出。 所以队列的实现也有两种形式,一种是数组实现队列,一种是用链表实现队列。 首先是用数组来实现队列。 使用数组队列,因为在删除时front会越来越大,所以 ...
分类:
其他好文 时间:
2016-06-13 17:08:58
阅读次数:
142
问题描述:栈是常用的一种数据结构,有n个元素在栈顶端一侧等待进栈,栈顶端另一侧是出栈序列。你已经知道栈的操作有两种:push和pop,前者是将一个元素进栈,后者是将栈顶元素弹出。现在要使用这两种操作,由一个操作序列可以得到一系列的输出序列。请你编程求出对于给定的n,计算并输出由操作数序列1,2,…, ...
分类:
其他好文 时间:
2016-06-08 18:54:17
阅读次数:
439
介绍栈的相关知识: (2)栈ADT: 2.1栈模型: 栈是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈的顶(top)。对栈的基本操作有Push(进栈)和Pop(出栈),前者相当于插入,后者则是删除最后插入的元素。 栈有时又叫做LIFO(后进先出表)。一般的栈模型是,存在某个元素位 ...
分类:
编程语言 时间:
2016-06-03 21:02:09
阅读次数:
245
这里面有一个注意的点是,如果现在要push x,且x等于当前存在的最小值(栈中已经有了x)时,也要把x进栈。否则当x出栈时,当前最小值也跟着出栈,但是原栈中最小值元素依然还有,此时最小值却发生了错误。 class MinStack { public: /** initialize your data ...
分类:
其他好文 时间:
2016-05-23 00:29:25
阅读次数:
167