首页 > 其他分享 >【NO.100】LeetCode HOT 100—739. 每日温度

【NO.100】LeetCode HOT 100—739. 每日温度

时间:2023-10-31 11:02:05浏览次数:32  
标签:NO.100 int length answer HOT temperatures 739 stack 温度


题目:739. 每日温度

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

示例 1:

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

示例 2:

输入: temperatures = [30,40,50,60]
输出: [1,1,1,0]

解题

方式一:暴力求解

最简单莫过于双重循环暴力求解,思路:从当前下标 i 开始往后寻找第一个比其大的数,记录其下标 j ,那 answer[i] = j - i ,不多说,直接上代码:

/**
 * 时间复杂度:O(n^2)
 * 空间复杂度:O(n)
 */
public int[] dailyTemperatures(int[] temperatures) {
    int[] answer = new int[temperatures.length];
    for (int i = 0; i < temperatures.length - 1; i++) {
        for (int j =  i + 1; j < temperatures.length; j++) {
            if (temperatures[j] > temperatures[i]) {
                answer[i] = j - i;
                break;
            }
        }
    }
    return answer;
}

方式二:单调栈

思路:

  • 可以维护一个存储下标的单调栈,从栈底到栈顶的下标对应的温度列表中的温度依次递减。如果一个下标在单调栈里,则表示尚未找到下一次温度更高的下标。
  • 正向遍历温度列表,对于温度列表中的每个元素 temperatures[i] ,
  • 如果栈为空,则直接将 i 进栈,
  • 如果栈不为空,则比较栈顶元素 index 对应的温度和当前温度 temperatures[i]的大小,如果当前温度大于栈顶元素对应的温度,则将栈顶元素移除,并记录栈顶元素 index 对应的等待天数为 i - index
/**
* 时间复杂度:O(n)
* 空间复杂度:O(n)
*/
public int[] dailyTemperatures(int[] temperatures) {
    int length = temperatures.length;
    int[] answer = new int[length];
    // 单调栈
    Deque<Integer> stack = new ArrayDeque<>();
    for (int i = 0; i < length; i++) {
        int temp = temperatures[i];
        // 栈不空,比较当前温度和栈顶元素对应的温度的大小
        while (!stack.isEmpty() && temp > temperatures[stack.peek()]) {
            // 碰见温度更高的,计算差值,得到结果
            answer[stack.peek()] = i - stack.peek();
            stack.pop();
        }
        // 栈为空,当前下标放进去
        stack.push(i);
    }

    return answer;
}


标签:NO.100,int,length,answer,HOT,temperatures,739,stack,温度
From: https://blog.51cto.com/u_15714244/8102527

相关文章

  • 快照snapshot
    快照snapshot快照功能通常是以写入时复制技术来实作。Linux通过逻辑卷轴管理员实作快照功能。写入时复制写入时复制(英语:Copy-on-write,简称COW)是一种计算机[程序设计]领域的优化策略。其核心思想是,如果有多个调用者(callers)同时请求相同资源(如内存或磁盘上的数据存储),他们会共同获......
  • Photoshop 2020 中文免费版下载含安装包
    AdobePhotoshopCC中文版除去PhotoshopCS6中所包涵的功能,PhotoshopCC还新增相机防抖动、CameraRAW功能改进、图像提升采样、属性面板改进、Behance集成等等功能。adobephotoshopcc2020拥有智能型锐利化、智能型增加取样、3D场景面板、建立晕映效果、修图、水印、羽化等等功......
  • Java Hotspot G1 GC 原理
    目录原理概念初始堆占用情况标记RememberSet原理CardTableCollectSet停顿预测模型G1的垃圾回收过程对象分配线程本地分配缓冲区Eden区中分配Humongous区分配堆内存结构传统的GC收集器G1收集器G1垃圾收集周期YoungGCYoungGC总结MixedGC全局并发标记初始标记根区域扫描......
  • Adobe_Photoshop_2024_25.0.0.37图文安装教程及下载
    Adobe_Photoshop_2024正式版,拥有之前beta版本的全部功能,包括但不限于内置AI绘图,一键抠图、移除工具、悬浮工具栏、图像扩展、填充式生成、调整预设等等。尤其是“生成式填充”和“生成式扩展”。除此之外,PS2024正式版还内置了NeuralFilters神经AI滤镜,这款插件用于图片的处理,它......
  • 新手教程系列:照片传输、整理、分享,Synology Photos一套轻松搞定
    谁说简单易用一定要牺牲安全?SynologyPhotos可让您轻松分享充满回忆的相册,同时确保相册安全,无论是分享一张照片,还是一个视频或者整个相册,群晖都能满足您的需求,它可不仅限去共享照片功能,还有传输,收集,整理,堪比摄影小助理,所以今天就来盘一盘如何让 SynologyPhotos成为你的摄影助理......
  • photon rust 图像处理库
    photon是一个基于rust开发的图像处理库,同时也支持基于WebAssembly的处理参考nodejs使用添加依赖{"name":"image-demo","version":"1.0.0","main":"index.js","license":"MIT",......
  • 【论文阅读笔记】【SAM相关】 Matcher: Segment Anything with One Shot Using All-Pu
    读论文时思考的问题论文试图解决什么问题?如何更好地建立视觉方面的fundationmodel如何建立一个模型,使得其在没有人类输入信号的情况下(这里主要是one-shotimage)能更好地挖掘SAM的能力,实现相同的语义元素(好像不一定要求是一个实例)的分割(并提取割出来的物体的语义信息?)......
  • gerrit 快捷键说明 shotcuts 说明
    gerrit是一个git仓库,可以快速的对比代码的不同。下面记录一下快捷键NavigationwithinthereviewUIcanbecompletelydonebykeys,andmostactionscanbecontrolledbykeyboardshortcuts.Typing?opensapopupthatshowsalistofavailablekeyboardshortcu......
  • chatGPT发展中Few-Shot, Zero-Shot & One-shot 的通俗理解
    先解释one-shot。公司门禁用了人脸识别,你只提供一张照片,门禁就能认识各个角度的你,这就是one-shot。可以把one-shot理解为用1条数据finetune模型。在人脸识别场景里,one-shot很常见。zero-shot与few-shot,回到NLP场景。用wikipedia、新闻等,训练一个GPT模型,直接拿来......
  • DxO PhotoLab 6:RAW照片编辑的终极解决方案 Mac+win版
    在摄影领域,DxOPhotoLab6是一款引领行业潮流的RAW照片编辑软件。这款软件不仅继承了DxO的优秀传统,更在RAW照片处理上实现了新的突破。→→↓↓载DxOPhotoLab6mac/win版DxOPhotoLab6的核心功能在于其强大的RAW照片解码能力。它能够将相机的RAW文件转化为高质量的图像,同......