单调栈单调队列
失业边缘,疯狂挣扎
这个作者很懒,什么都没留下…
展开
-
面试题30. 包含min函数的栈(Java)(辅助栈,单调栈)
1 题目定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); -->...原创 2020-03-05 14:10:54 · 147 阅读 · 0 评论 -
!42. 接雨水(Java)(单调栈)(动态规划,左缀max,右缀max)(双指针)
1 题目给定 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]输出: 62 Java2.1 方法一(单调栈,按行求)当两个较高元素中间夹一个或几个较低元素,此时可存水,即“凹陷部分”class Solution原创 2020-05-11 17:10:36 · 239 阅读 · 0 评论 -
121. 买卖股票的最佳时机(Java)(双指针)(单调队列)(动归正向迭代,二维dp及优化)
1 题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意...原创 2020-02-17 16:42:05 · 139 阅读 · 0 评论 -
面试题59 - I. 滑动窗口的最大值(239. 滑动窗口最大值)(Java)(单调队列)(滑动窗口)
1 题目给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释:滑动窗口的位置 最大值[1 3 -1] -3 5 3 6 7 31 [3 -1 -3] 5 3 6 7 ...原创 2020-03-18 12:56:22 · 187 阅读 · 0 评论