LeetCode 单调栈练习题归纳总结
什么是单调栈?
单调栈,栈内顺序要么从大到小 要么从小到大。
一:739. 每日温度
解题思路:
遍历每日温度,维护一个单调栈,若栈为空或者当日温度小于、等于栈顶温度,则直接入栈;反之若当日温度大于栈顶温度,说明栈顶元素的升温日已经找到了,则将栈顶元素出栈,计算其与当日相差的天数即可。
注意:题目要求返回的是升温的天数,而不是升温的温度,因此栈中保存的应是数组的下标,而非温度。
代码:
class Solution {public int[] dailyTemperatures(int[] temperatures) {int[] result = new int[temperatures.length];Stack<Integer> stack = new Stack();for(int i = 0;i<temperatures.length;i++) {while (!stack.isEmpty() && temperatures[i]>temperatures[stack.peek()]) {// 栈里面保存的下标对应的温度是从大到小排序的int index = stack.pop();result[index] = i - index;}stack.push(i);}return result;}
}
二:496. 下一个更大元素 I
解题思路:
利用 Stack、HashMap解决:
1、先遍历大数组nums2,首先将第一个元素入栈;
2、继续遍历,当当前元素小于栈顶元素时,继续将它入栈;当当前元素大于栈顶元素时,栈顶元素出栈,此时应将该出栈的元素与当前元素形成key-value键值对,存入HashMap中;
3、当遍历完nums2后,得到nums2中元素所对应的下一个更大元素的hash表;
4、遍历nums1的元素在hashMap中去查找‘下一个更大元素’,当找不到时则为-1。
代码:
class Solution {public int[] nextGreaterElement(int[] nums1, int[] nums2) {int[] res = new int[nums1.length];Stack<Integer> stack = new Stack(); Map<Integer,Integer> map = new HashMap();for (int num:nums2) {while(!stack.isEmpty() && num>stack.peek()) {map.put(stack.pop(),num);}stack.push(num);}for(int i = 0; i<nums1.length; i++){res[i] = map.getOrDefault(nums1[i],-1);} return res;}
}
LeetCode 单调栈练习题归纳总结相关推荐
- leetcode 739. 每日温度 单调栈解法和暴力法及其优化 c代码
如题: 根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数.如果之后都不会升高, 请在该位置用 0 来代替.例如,给定一个列表 temperature ...
- leetcode 239. Sliding Window Maximum | 239. 滑动窗口最大值(单调栈,窗口内最大最小值更新结构)
题目 https://leetcode.com/problems/sliding-window-maximum/ 题解 窗口内最大最小值更新结构,单调栈问题,左神视频讲过,<程序员算法面试指南& ...
- leetcode 907. Sum of Subarray Minimums | 907. 子数组的最小值之和(单调栈)
题目 https://leetcode.com/problems/sum-of-subarray-minimums/ 题解 单调栈问题.参考左神算法课:https://ke.qq.com/webcou ...
- leetcode 1504. Count Submatrices With All Ones | 1504. 统计全 1 子矩形(单调栈)
题目 https://leetcode.com/problems/count-submatrices-with-all-ones/ 题解 本题与 leetcode 84. Largest Rectan ...
- leetcode 581. Shortest Unsorted Continuous Subarray | 581. 最短无序连续子数组(单调栈)
题目 https://leetcode.com/problems/shortest-unsorted-continuous-subarray/ 题解 乍一看,没思路,直奔 Related Topics ...
- leetcode 85. Maximal Rectangle | 85. 最大矩形(单调栈)
题目 https://leetcode.com/problems/maximal-rectangle/ 题解 本题与 leetcode 84. Largest Rectangle in Histogr ...
- leetcode 84. Largest Rectangle in Histogram | 84. 柱状图中最大的矩形(单调栈)
题目 https://leetcode.com/problems/largest-rectangle-in-histogram/ 题解 一句话总结:遍历数组,对于每个height[i],以其自身的高度 ...
- leetcode 496, 503, 556. Next Greater Element I, II, III | 496, 503, 556. 下一个更大元素 I,II,III(单调栈)
496. Next Greater Element I https://leetcode.com/problems/next-greater-element-i/ 单调栈问题,参考:https://l ...
- leetcode 435. Non-overlapping Intervals | 435. 无重叠区间(单调栈)
题目 https://leetcode.com/problems/non-overlapping-intervals/ 题解 我一开始是没有 get 到这道题的精髓的.只是在想,用贪心法,当两个 (a ...
- leetcode 402. Remove K Digits | 402. 移掉 K 位数字(单调栈)
题目 https://leetcode.com/problems/remove-k-digits/ 题解 本题考察对问题的抽象能力,多写几个例子可以发现,这是一个单调栈问题,维护一个单调不减栈. cl ...
最新文章
- “剁手”的第十年,AI加持下的快递速度你还满意吗?
- apache 定义日志格式 及日志记录
- 海量数据选取重复次数最多的n个
- 从ABAP Netweaver的SICF到SAP Kyma的Lambda Function
- 哪个是python程序中与缩进有关的正确说法_关于Python程序中与“缩进”有关的说法中,以下选项中正确的是()。_学小易找答案...
- unity如何往下挖地形_Unreal Engine地形系统辨析(一)
- HTML 5 input placeholder 属性
- 0day影响 Chrome和 Safari,谷歌不修复
- 页面加载中的css,JS+CSS实现网页加载中的动画效果
- 微信小程序学习日记---模板(template)全解析
- 在Android上实现汉字笔顺动画效果
- 在linux系统下如何下载中文输入法,如何在linux系统下安装中文输入法
- k3 cloud oracle,调试K3Cloud的管理中心未能加载Oracle问题
- python中的def是什么意思啊_python的def是什么意思
- T检验与F检验的区别_f检验和t检验的关系
- 1+X 网络系统 建设与运维(中级)实验
- 2022-2028年中国燃气轮机行业市场专项调研及投资前景研究报告
- 安卓产品方案开发广告机案例
- 论文笔记 Stochastic Gradient Hamiltonian Monte Carlo (SGHMC)
- 前端项目的总结——为什么要组件化?
热门文章
- 饥饿的小易(BFS问题)
- response.getStatusCode()==200什么意思
- 静候Google I/O 2014大会开幕
- super-csv文档的部分翻译及基本使用
- Craw the data of the web page and parse to pdf
- 华为交换机不同VLAN间通信的两种主流解决方案,一分钟快速掌握
- codeforces1100 F. Ivan and Burgers(线性基)
- Elasticsearch:如何在聚合时选择所需要的 bucket 并进行可视化
- 【无代码体验】宜搭车辆管理系统模板试用
- scikit-learn初级