栈
virgilshi
和舒适区说白白(ง'-')ง
展开
-
[LeetCode] 树的总结(二叉树和N叉树)
写在前面 树的考察点归根结底是对树的前序、中序、后序和层序的考察,树的前、中、后序遍历的递归写法是图的深度优先搜索的子集,因为带有递归特点,所以往往可以使用栈将其改写成非递归写法,树的层序遍历是图的广度优先搜索的子集。 树的遍历 树的递归遍历难度非常小,一般不会直接考察,而选择考察它的非递归写法,之前专门为二叉树和N叉树的遍历写过总结博客。由于此知识点过于重要,而且在面试手撕代码中是高频代码,因此重新再整理一次。 LeetCode中相关的题如下: 94. 二叉树的中序遍历 144. 二叉树的前序遍历 17原创 2020-07-29 22:56:02 · 439 阅读 · 0 评论 -
[LeetCode] LeetCode中柱形图、矩形等题小结(单调栈)
84. 柱状图中最大的矩形 题目链接 解题思路: 这里提供两种解题思路,即直接解题,和单调栈解题。 直接解题,观察下图,6能覆盖5出现的情况,而5不能覆盖6的情况,因此我们会想到,在序列递增的时候可以延迟找最大矩形,而当序列开始递减时,即出现拐点,从拐点处搜索到序列起点,计算并记录这个过程出现的最大矩形,矩形的高度是向左遍历过程中的最小值。 class Solution { public: int largestRectangleArea(vector<int>& heig原创 2020-06-26 17:17:01 · 190 阅读 · 0 评论 -
[LeetCode] 42. 接雨水(单调栈)
42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。 示例: 输入: [0,1,0,2,1,0,1,3,2,1,2,1] 输出: 6 解题思路: 试想一下,若我们手动解此题会如何解?我们可能会遍历数组,然后计算每个元素所在的位置形成的水柱面积,水柱的宽为1,现在就需要知道原创 2020-06-13 12:47:06 · 423 阅读 · 0 评论