随笔分类 -  数据结构——单调栈

摘要:leetcode84最大矩形 分析:单调栈,维护一个单调递增栈,小于等于出栈,每次出栈时说明以出栈元素作为枚举值,i为右边界栈顶元素的下一个为左边界。为了使栈中元素都起作用,需要末尾补个0. class Solution { public: int largestRectangleArea(vect 阅读全文
posted @ 2021-12-12 23:35 Rogn 阅读(93) 评论(0) 推荐(0) 编辑
摘要:题目 求非嵌套子矩阵的个数。 分析 单调栈的套路题(类似的有求最大子矩阵)。 首先,按列预处理,每个位置化成连续1的个数。 例如,左边的图转成右边。 然后枚举每一行作为矩阵的底边,再从前往后枚举每一列,并维护一个关于高度的单调上升的栈。对于栈中每一个Up值,还需要维护一个其向左能拓展的最远位置Lef 阅读全文
posted @ 2019-08-10 23:12 Rogn 阅读(448) 评论(0) 推荐(0) 编辑
摘要:题目 链接 在蒜国的海岸线上有一排由西向东的瞭望塔,这些瞭望塔由于建造的地面高度不同,所有瞭望塔的高度也是不能不一样的。 这个时候蒜国国王来问蒜头君,每个瞭望塔向东能看到几个瞭望塔?这里需要注意在A塔东边有B塔,B塔的高度高于或等于A塔的高度,那么B塔后面的塔都看不到。 解决方案 由题意知,求左边第 阅读全文
posted @ 2019-07-04 13:49 Rogn 阅读(344) 评论(0) 推荐(0) 编辑
摘要:定义 从栈底元素到栈顶元素呈单调递增或单调递减,栈内序列满足单调性的栈。 原理 (1)当新元素在单调性上优于栈顶时(单增栈新元素比栈顶大,单减栈新元素比栈顶小),压栈,栈深+1; (2)当新元素在单调性与栈顶相同(新元素于栈顶相同)或劣于栈顶时(单增栈新元素比栈顶小,单减栈新元素比栈顶大),弹栈,栈 阅读全文
posted @ 2018-10-08 23:38 Rogn 阅读(531) 评论(0) 推荐(0) 编辑