力扣
leetcode Writeup Record
946.验证栈序列
多看别人的题解,能获得更好的优化代码,但凡是按照常规逻辑去写,代码往往有优化的余地
844.比较含退格的字符串
也许我不该强调这道题的对称性,而应该表述为 利用栈实现消消乐
739.每日温度
我们要寻找数组中每个数右边第一个比它大的数,使用单调递减栈
232.用栈实现队列
把 dataSrc 全部转移到 dataTop 中即可,返回对应的 top 之后,并不需要把 dataTop 中的元素返回到 dataSrc 中
225.用队列实现栈
因为队列只能从队头移除元素,必然单个队列也就无法实现栈了,所以核心实现就在移除最后的元素
155.最小栈
采用 pair 只需一个栈;加入元素就与 top 元素 进行 min 求值,就能保证当前 元素记录着对应 栈的最小元素
20.有效的括号
栈 适合解决对称性问题,这也是栈的一个特点
40.组合总和 II
前面做的组合题,不管强调与否,数组中的元素都是没有重复的,但这道题恰恰相反。看来只要解决重复元素可能带来的问题就可以了。我们就用一个布尔值 note 标记,如果 note 为 false 表明在同一层(同一个栈),否则在不同层(不同栈)。同层的元素相同可被忽略,不同层的元素相同不可被忽略
39.组合总和
我们的回溯会把当前元素和后面的元素所有可能都尝试一遍,而组合不强调顺序性,这就是为什么组合中其后的元素没有必要往前看
17.电话号码的字母组合
在完成《77.组合》基础上,这道题你要会两个技能,分别是建立映射关系(通常是数组)和单个数字字符转换为对应的整数(ch - '0')