当前位置: 首页 > news >正文

代码随想录训练营 单调栈

代码随想录训练营 单调栈

  • 84. 柱状图中最大的矩形🌸

最后一天~

84. 柱状图中最大的矩形🌸

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。
求在该柱状图中,能够勾勒出来的矩形的最大面积。

func largestRectangleArea(heights []int) int {// 声明max并初始化为0max := 0// 使用切片实现栈stack := make([]int, 0)// 数组头部加入0heights = append([]int{0}, heights...)// 数组尾部加入0heights = append(heights, 0)// 初始化栈,序号从0开始stack = append(stack, 0)for i := 1; i < len(heights); i++ {// 结束循环条件为:当即将入栈元素>top元素,也就是形成非单调递增的趋势for heights[stack[len(stack)-1]] > heights[i] {// mid 是topmid := stack[len(stack)-1]// 出栈stack = stack[0 : len(stack)-1]// left是top的下一位元素,i是将要入栈的元素left := stack[len(stack)-1]// 高度x宽度tmp := heights[mid] * (i - left - 1)if tmp > max {max = tmp}}stack = append(stack, i)}return max
}
http://www.lryc.cn/news/173583.html

相关文章:

  • Android MQTT
  • Codeforces Round 823 (Div. 2)C
  • npm发布vue3自定义组件库--方法一
  • Centos7原生hadoop环境,搭建Impala集群和负载均衡配置
  • 如何在macOS上安装Go并搭建本地编程环境
  • postgresql-存储过程
  • 改造user ,使得userId相同视为一个对象,user是Key,User的username做value
  • 力扣刷题-数组-滑动窗口法相关题目总结
  • Qt创建线程(线程池)
  • 【Java】泛型 之 使用泛型
  • 消费者NPS调查,帮您了解客户满意度!
  • Webpack监视文件修改,自动重新打包文件
  • list容器排序案例
  • PHP使用Analysis中英文分词
  • 视频汇聚/视频云存储/视频监控管理平台EasyCVR录像存储功能如何优化?具体步骤是什么?
  • Web服务(Web Service)
  • Java第4章 类的继承
  • Linux网络和安全:配置、远程访问与防御指南
  • 如何搭建Linux环境
  • 【解决方案】edge浏览器批量添加到集锦功能消失的解决方案
  • JS操作字符串方法学习系列(1)-每天学习10个方法
  • iterator和generator
  • ipv6笔记及总结
  • 64位Ubuntu20.04.5 LTS系统安装32位运行库
  • 关于vue.config.js
  • Jupyter NoteBook 中使用 cv2.imshow 显示图片
  • gpt扣款失败,openai扣款失败无法使用-如何解决gpt扣款失败的问题?
  • OJ练习第180题——颠倒二进制位
  • SpringSecurity授权--前端进行访问控制
  • 如何看待Unity新的收费模式?