文章目录

  • 1.单调栈
  • 2.单调递减栈
  • 3.单调递增栈
  • 4.总结

1.单调栈

通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,要用单调栈。

2.单调递减栈

单调递减栈,栈内只压缩右边比左边小的,单调递增相反。
739. 每日温度 - 力扣(LeetCode) (leetcode-cn.com)
这道题为单调递减栈,将索引压入到栈内,只要元素比栈顶的元素大,就弹出栈顶元素,并将栈顶元素的索引,计算与预计压入的索引差值,并将对应的值保存到栈顶元素索引的位置。

class Solution:def dailyTemperatures(self, temperatures: List[int]) -> List[int]:#单调递减栈stacker =[]res=[0]*len(temperatures)for i in range(len(temperatures)): while stacker and temperatures[stacker[-1]]< temperatures[i]:prev = stacker.pop()res[prev] = i- prev  #弹出时候计算差值 并改变对应索引的结果stacker.append(i)return res

496. 下一个更大元素 I - 力扣(LeetCode) (leetcode-cn.com)

class Solution:def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:#单调递减stacker = []res=[-1]*len(nums1)for i in nums2:while stacker and stacker[-1] < i:prev = stacker.pop()if prev in nums1: res[nums1.index(prev)]=istacker.append(i)return res

503. 下一个更大元素 II - 力扣(LeetCode) (leetcode-cn.com)

class Solution:def nextGreaterElements(self, nums: List[int]) -> List[int]:#最多再循环一次 所以将原nums 扩充为2倍 单调递减res= [-1] *len(nums)nums += numsstacker = []for i in range(len(nums)):while stacker and nums[stacker[-1]] < nums[i]:prev = stacker.pop()if prev <len(res): res[prev]=nums[i]stacker.append(i)return res

42. 接雨水 - 力扣(LeetCode) (leetcode-cn.com)

class Solution:def trap(self, height: List[int]) -> int:#单调递减stacker = []res=0for i in range(len(height)):while stacker and height[stacker[-1]] < height[i]:prev = stacker.pop()if stacker:w =  i - stacker[-1]-1h =  min(height[stacker[-1]],height[i])-height[prev]res += w*h  #弹出的面积stacker.append(i)return res

3.单调递增栈

84. 柱状图中最大的矩形 - 力扣(LeetCode) (leetcode-cn.com)
唯一的一个单调递增栈

class Solution:def largestRectangleArea(self, heights: List[int]) -> int:#单调递增栈heights=[0]+heights+[0]  #保证前面的全部计算过stacker =[]res = 0for i in range(len(heights)):while stacker and heights[stacker[-1]]> heights[i]:prev = stacker.pop()if stacker:w = i- stacker[-1]-1  #在i与stacker[-1]之间 最大高度肯定为刚刚弹出h = heights[prev]res = max(res,w*h)stacker.append(i)return res

4.总结

终于完成了,但是乐扣的题每天还必须做几道题。
下一步重点就应该放在python爬虫上了。
你好爬虫,我来了!

力扣刷题-python-单调栈(单调递减栈、单调递增栈)相关推荐

  1. 教你创建电脑、手机同步的markdown云笔记--力扣刷题力荐!

    开篇先致歉 其他不谈,开篇必须先给各位读者道个歉,年后工作上比较忙,加上最近闲暇的时间都用来在力扣上刷算法题了,导致公众号断更有些严重啊.再加上年后将健身减重提上了日程,时间上就更显的捉襟见肘了. 不 ...

  2. 《剑指Offer》力扣刷题笔记(03-10)

    <剑指Offer>力扣刷题笔记(03-10) 最近确实有点闲,想在进组搬砖之前找点有意义的事干,于是,就开始刷<剑指Offer>.<程序员面试金典>等书上的题目,也 ...

  3. 『力扣刷题』5238_找出给定方程的正整数解 解题代码

    html: embed_local_images: true embed_svg: true offline: true toc: undefined print_background: false ...

  4. 力扣刷题——双数之和

    很多人去力扣刷题都是数组的第一题,也就是双数之和,相信这也是很多人劝退题目,甚至对自己学过的知识产生了怀疑,这真的是我学完C语言,Java,Python或C++之后能做出来的题目吗?直接劝退了很多人, ...

  5. 力扣刷题笔记--168. Excel表列名称

    题目描述: 简单题 给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称. 例如: A -> 1 B -> 2 C -> 3 ... Z -> 2 ...

  6. 力扣刷题之二叉树的层序遍历

                                                      Welcome to you, 每日一刷系列 二叉树的层序遍历 二叉树的层序遍历II 二叉树的右视图 ...

  7. 『力扣刷题』5275_找出井字棋的获胜者 解题代码

    LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5275_找出井字棋的获胜者 * 5275. 找出井字棋的获胜者 显示英文描述* 用户通过次数0* 用户尝试次数0* ...

  8. 『力扣刷题』5276_不浪费原料的汉堡制作方案 解题代码

    LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5276_不浪费原料的汉堡制作方案 * 5276. 不浪费原料的汉堡制作方案 显示英文描述* 用户通过次数212* 用 ...

  9. 力扣刷题全局变量WA,局部变量AC的问题

    力扣刷题全局变量WA,局部变量AC问题 题目 原因 题目 golang力扣leetcode 1219.黄金矿工 原因 今天在刷题的时候,遇到一个现象,本地跑测试全部通过,一提交就错错错,非常离谱 然后 ...

  10. 力扣刷题pdf(java版本,内含暗黑版和光明版),都在这里了

    BAT大佬力扣刷题pdf,都在这里了! ​相信很多小伙伴刷题的时候面对力扣上近两千道题目,感觉无从下手! 我找了很久,今天终于让找到了Java版leetcode算法题解笔记,强烈建议先按照本篇介绍pd ...

最新文章

  1. java sip 携带sdp_SIP中的SDP offer/answer交换初探
  2. Windows XP Professional系统修复的操作方法
  3. eBay的Elasticsearch性能调优实践
  4. 子网掩码255.255.0.0与255.255.255.0的区别
  5. ubuntu安装python_使用WSL在Windows上搭建Python开发环境
  6. 如何制作一款HTML5 RPG游戏引擎——第五篇,人物人物特效
  7. 17.Class Preferences
  8. Codeforces 264B - Good Sequences
  9. 扒一扒贝索斯的接班人,为何选他挑起大梁?
  10. 常用的Wi-Fi产品调试测试工具
  11. Kotlin for Android (let、with、run、apply、also函数)
  12. LiveZilla 详细 配置 设置 (一) 安装 wamp
  13. JZOJ100047. 【NOIP2017提高A组模拟7.14】基因变异
  14. R语言小代码(聚类练习)
  15. 新手如何推广优化自己的网站
  16. ps有一款比较好用的插件也就是调色插件用过吗
  17. FPGA开发软件详细清单
  18. 多益网络2015校园招聘面试题目大揭秘
  19. conda 包安装位置 虚拟环境_conda指定位置配置虚拟环境
  20. 计算机二级试题aoa,计算机二级AOA理论题库

热门文章

  1. 电脑双网卡,默认路由优先级设置
  2. 计算机网络 Web的攻击技术
  3. 查询江苏丹阳高考成绩2021,2021年镇江高中录取分数线是多少及高中排名榜
  4. 俺滴图像偏色检测,秒杀其它偏色检测算法
  5. JAVA_(面向对象)
  6. 来自西弗吉利亚大学li xin整理的CV代码合集(转)
  7. espcms_v5的/public/class_connector.php 对Cookies中输入参数ecisp_member_info过滤不当
  8. 设置HTTP请求超时自动重发
  9. Klein 侧扫声呐系列介绍
  10. hadoop+zookeeper+hbase+hive