代码随想录35期Day54-JavaScript

Day54题目

### LeetCode739每日温度

核心思想:今天主要是学会单调栈的使用.找到比元素更大的下一个元素,如果比栈顶元素小就入栈,否则就出栈顶元素,当前元素就是比栈顶元素大的"下一个更大的元素".

java 复制代码
/**
 * @param {number[]} temperatures
 * @return {number[]}
 */
var dailyTemperatures = function(temperatures) {
	// 单调栈存放下标
    var stack = []
    var answers = new Array(temperatures.length).fill(0)
    stack.push(0)
    for(var i  = 1 ; i < temperatures.length ; i ++ ){
    	// js没有peek,只能使用数组类似的下标访问最后一个元素
        while(temperatures[stack[stack.length-1]] < temperatures[i]){
            var index = stack.pop();
            answers[index] = i - index;
        }
        stack.push(i);
    }

    return answers;
};

LeetCode496下一个更大元素

核心思想:使用单调栈存储元素的值就行

java 复制代码
/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
var nextGreaterElement = function(nums1, nums2) {
    var answers = [];
    var stack = []
    var tem = [];
    stack.push(nums2[0])
    for(let i = 0 ; i < nums2.length ; i ++){
        while(stack[stack.length-1] < nums2[i]){
            tem[stack.pop()] = nums2[i];
        }
        stack.push(nums2[i]);
    }
    for(let i = 0 ; i < nums1.length ; i ++){
        if(!tem[nums1[i]]){
            answers.push(-1)
        }else{
            answers.push(tem[nums1[i]]);
        }
    }
    return answers;
};  
相关推荐
从零开始的代码生活_8 分钟前
C++ stack、queue 与 priority_queue:容器适配器原理与实战
开发语言·c++·后端·学习·算法
techdashen31 分钟前
Go 1.25 新增 `reflect.TypeAssert`:更直接、更高效地从 `reflect.Value` 取出类型值
开发语言·后端·golang
2zcode33 分钟前
项目文档:基于MATLAB低采样率ISAR成像的快速稀疏重建算法研究
开发语言·算法·matlab
xixi09241 小时前
JMeter5.6.3基础使用教程1
java·开发语言
এ慕ོ冬℘゜1 小时前
原生 JS 实现自定义单选日历组件(无 UI 库、纯手写、禁用过去日期)
开发语言·javascript·ui
Ulyanov1 小时前
刚体动力学方程——牛顿-欧拉与陀螺效应的奥秘
开发语言·python·目标跟踪·雷达电子对抗·导引头
罗超驿1 小时前
15.Java异常处理:从束手无策到从容应对
java·开发语言
MoonBit月兔1 小时前
MoonBit v0.10.4版本更新
开发语言·人工智能·编程·moonbit
小樱花的樱花2 小时前
Linux 多线程编程:互斥锁(Mutex)详解
linux·c语言·开发语言
mONESY2 小时前
Skill 技能与 MCP 协议的底层逻辑与协同真相
javascript