代码随想录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;
};  
相关推荐
草莓熊Lotso1 小时前
C++ STL set 系列完全指南:从底层原理、核心接口到实战场景
开发语言·c++·人工智能·经验分享·网络协议·算法·dubbo
咖啡の猫3 小时前
搭建Python开发环境
开发语言·python
程序猿小蒜4 小时前
基于springboot的共享汽车管理系统开发与设计
java·开发语言·spring boot·后端·spring·汽车
lsp程序员0104 小时前
使用 Web Workers 提升前端性能:让 JavaScript 不再阻塞 UI
java·前端·javascript·ui
听风吟丶5 小时前
Java 8 Stream API 高级实战:从数据处理到性能优化的深度解析
开发语言·python
hygge9995 小时前
Spring Boot + MyBatis 整合与 MyBatis 原理全解析
java·开发语言·经验分享·spring boot·后端·mybatis
Run_Teenage7 小时前
C++:智能指针的使用及其原理
开发语言·c++·算法
码界奇点8 小时前
Java设计模式精讲从基础到实战的常见模式解析
java·开发语言·设计模式·java-ee·软件工程
卷福同学8 小时前
【AI编程】用Codebuddy+lighthouse开发AI年龄模拟网站
javascript·后端
四维碎片8 小时前
【Qt】配置安卓开发环境
android·开发语言·qt