单调栈
MD_
不拼一下 你怎么知道你不会成功!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
单调栈系列-Leetcode 316. 去除重复字母
文章目录问题描述解题报告实现代码参考资料 问题描述 给你一个仅包含小写字母的字符串,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置)。 示例 1: 输入: “bcabc” 输出: “abc” 解题报告 维持一个 单调递增栈。其他也没什么难点了,有一个注意要点是,如果 a 已经入栈了,在后面又遇到当前元素 a 小于栈顶元素 b,此时是不需要将元素 b 弹出的,因为已经维持 ab 这样的顺序。 实现代码 class Solution { publi原创 2020-05-31 00:08:14 · 355 阅读 · 0 评论 -
单调栈系列-Leetcode 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 解题报告 维持一个 单调递减栈,当前元素大于栈顶元素时,如果栈中存在两个以上元素,就可以储水了。 实现代原创 2020-05-30 23:58:09 · 273 阅读 · 0 评论 -
单调栈系列-Leetcode 84. 柱状图中最大的矩形
文章目录问题描述解题报告实现代码参考资料 问题描述 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。 图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。[1]^{[1]}[1] 示例: 输入: [2,1,5,6,2,3] 输出: 10 解题报告 维持一个 单调递增栈,当前元素小于栈顶元素时,以栈顶元素为高度的矩原创 2020-05-30 23:48:24 · 276 阅读 · 0 评论 -
单调栈系列-Leetcode 402. 移掉K位数字
文章目录问题描述解题报告实现代码参考资料 问题描述 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。 注意: num 的长度小于 10002 且 ≥ k。 num 不会包含任何前导零。 示例 1 : 输入: num = “1432219”, k = 3 输出: “1219” 解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。 示例 2 : 输入: num = “10200”, k = 1 输出: “200” 解释: 移掉首位的 1 剩原创 2020-05-30 23:15:33 · 326 阅读 · 0 评论 -
单调栈系列-Leetcode 496. 下一个更大元素 I
文章目录问题描述解题报告实现代码参考资料 问题描述 给定两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。 nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 [1]^{[1]}[1]。 解题报告 求解每个元素的下一个更大元素,采用 单调递减栈 来存储数组中的元素,当前元素小于栈顶元素时,压栈;当前元素大于栈原创 2020-05-30 19:41:16 · 310 阅读 · 0 评论
分享