206.反转链表
反转链表需要用到三个指针,left 和 right 指针用于反转链表,而 node 指针用来保存还未进行反转的链表
933.最近的请求次数
这道题只要想明白一件事情,即由于题目保证每次对 ping 调用所使用的 t 值都 严格递增,而我们只关心传递进来的 t 在 [t-3000,t] 范围内 ping 的总数,那就表明之前加入的所有数据并不是都有必要一直存在
946.验证栈序列
多看别人的题解,能获得更好的优化代码,但凡是按照常规逻辑去写,代码往往有优化的余地
844.比较含退格的字符串
也许我不该强调这道题的对称性,而应该表述为 利用栈实现消消乐
739.每日温度
我们要寻找数组中每个数右边第一个比它大的数,使用单调递减栈
232.用栈实现队列
把 dataSrc 全部转移到 dataTop 中即可,返回对应的 top 之后,并不需要把 dataTop 中的元素返回到 dataSrc 中
225.用队列实现栈
因为队列只能从队头移除元素,必然单个队列也就无法实现栈了,所以核心实现就在移除最后的元素
155.最小栈
采用 pair 只需一个栈;加入元素就与 top 元素 进行 min 求值,就能保证当前 元素记录着对应 栈的最小元素
20.有效的括号
栈 适合解决对称性问题,这也是栈的一个特点
40.组合总和 II
前面做的组合题,不管强调与否,数组中的元素都是没有重复的,但这道题恰恰相反。看来只要解决重复元素可能带来的问题就可以了。我们就用一个布尔值 note 标记,如果 note 为 false 表明在同一层(同一个栈),否则在不同层(不同栈)。同层的元素相同可被忽略,不同层的元素相同不可被忽略
134567