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

js单调栈解题模板

模板

function solve(arr) {const stack = [];const result = new Array(arr.length).fill(默认值);for (let i = 0; i < arr.length; i++) {while (stack.length && 比较条件(arr[i], arr[栈顶])) {const top = stack.pop();result[top] = 计算结果(i, top); }stack.push(i);}return result;
}

例题一:每日温度

题目描述

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。

示例 1:
输入: temperatures = [73,74,75,71,69,72,76,73]
输出: [1,1,4,2,1,1,0,0]

代码

 //"需要为每个元素寻找下一个更大/更小元素"这类问题适用于单调栈
var dailyTemperatures = function(temperatures) {const n = temperatures.length;let stack  = [];let ans = new Array(n).fill(0);for(let i=0; i<n; i++){while(stack.length && temperatures[i] > temperatures[stack[stack.length-1]]){let cur = stack.pop();ans[cur] = i-cur;}stack.push(i);}return ans;
};

例题二:柱状图中最大的矩形

题目描述

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

代码

var largestRectangleArea = function(heights) {// 头部加0:避免空栈判断,保证栈永远不为空// 尾部加0:强制所有有效柱子出栈计算heights = [0,...heights,0];const n = heights.length;let st = [];let ans = 0;for(let i=0; i<n; i++){while(st.length && heights[i] < heights[st[st.length-1]]){let h = heights[st.pop()];let w = i-st[st.length-1]-1; //左边界减去右边界(栈顶元素是第一个比当前矮的左柱子)ans = Math.max(ans, h*w); }st.push(i);}return ans;
};
http://www.xdnf.cn/news/3800.html

相关文章:

  • skynet.socket.recv 没有处理分包问题
  • 办公文档全能处理工具功能解析
  • GR00t 安装使用教程踩坑记录
  • 专为焦油介质打造:煤焦油专用气动硬密封调节 V 型球阀(带手动)的卓越特点-耀圣
  • mvvm 如何 实现 MultiBinding 与转换器
  • SCAU18124--N皇后问题
  • 基于Vue2 + Element 实现任务列表管理功能的详细教程
  • tp5 php获取农历年月日干支甲午
  • MCP协议的使用分享
  • 数据库=====
  • 2025 年最新 Python 语言实现网易企业邮箱邮件推送验证码详细教程(更新中)
  • 智能决策支持系统的基本概念与理论体系
  • Ubuntu下安装Node.js
  • 【java八股文】深入浅出synchronized优化原理
  • 嵌入式Linux应用项目----智能网关
  • Docker Compose:服务编排:批量管理多个容器
  • 《Java高级编程:从原理到实战 - 进阶知识篇四》
  • 利用Elixir中的原子特性 + 错误消息泄露 -- Atom Bomb
  • 深度思考Qwen3
  • MySQL 中日期相减的完整指南
  • # 基于词袋模型(BoW)的猫狗图像分类实践
  • vue的diff算法是什么、比较方式,原理分析、示例解释讲解
  • 迭代器的思想和实现细节
  • 【序列化与反序列化详解】
  • 【漫话机器学习系列】237. TSS总平方和
  • 【2025软考高级架构师】——未来信息综合技术(11)
  • C++笔记-多态(包含虚函数,纯虚函数和虚函数表等)
  • 在MySQL中建索引时需要注意哪些事项?
  • Vue3源码学习5-不使用 `const enum` 的原因
  • 普推知产:图形商标通过初审,图形商标申请时注意!