【Leetcode】739. Daily Temperatures

news/2024/7/6 1:50:51

题目地址:

https://leetcode.com/problems/daily-temperatures/

题目大意是,对于数组中每个数字,找出右边第一个比它大的数字,记录下标的差最后返回。典型单调栈的应用。维护一个单调下降的栈,如果栈空或者栈顶大于等于要push进的数,就将该数push进去,否则该数就是栈顶右边第一个大于栈顶的数,就对其进行记录下标的差值并pop掉,直到栈为空或者栈顶重新大于等于要push的数的时候,就push进这个数。总而言之,是要维护栈的单调性。

class Solution {
    public int[] dailyTemperatures(int[] T) {
        int[] res = new int[T.length];
        Deque<Integer> stack = new ArrayDeque<>();
        for (int i = 0; i < T.length; i++) {
            while (!stack.isEmpty() && T[stack.peek()] < T[i]) {
                int cur = stack.pop();
                res[cur] = i - cur;
            }
            stack.push(i);
        }
        return res;
    }
}

时空复杂度 O ( n ) O(n) O(n)。算法正确性证明非常简单,只需证明任意满足条件的pair的下标差都被记录了就行了,而这一点是显然的。


http://www.niftyadmin.cn/n/3647491.html

相关文章

DLL(Dynamic Link Libraries)专题[转帖]

原帖地址:http://www.microsoft.com/china/community/program/originalarticles/techdoc/dll.mspxDLL(Dynamic Link Libraries)专题目录引言 调用方式 MFC中的DLL DLL入口函数 关于约定 关于DLL的函数 模块定义文件(.DEF) DLL程序和调用其输出函数的程序的关系 作者引言比较大的…

【Leetcode】704. Binary Search

题目地址&#xff1a; https://leetcode.com/problems/binary-search/ 给定一个长nnn的升序数组AAA&#xff0c;返回某个给定数ttt的下标&#xff0c;如果不存在则返回−1-1−1。 二分。代码如下&#xff1a; class Solution {public:int search(vector<int>& a, …

Spring是怎样巧用三级缓存解决循环依赖的?灵魂拷问

前言 目前绝大部分的Java程序员都是处于增删改查的阶段&#xff0c;但是到了这个阶段后就应该考虑下一个层次的突破了&#xff0c;总不能做一辈子的crud吧… **以目前IT行业的发展趋势以及就业情况来看&#xff0c;**市场早已经不缺初级开发了&#xff0c;对于中高级开发人才…

【Leetcode】74. Search a 2D Matrix

题目地址&#xff1a; https://leetcode.com/problems/search-a-2d-matrix/ 给定一个mnm\times nmn的矩阵AAA&#xff0c;每行单调上升&#xff0c;并且每行的末项都小于下一行的首项。另给定一个数&#xff0c;问这个数是否在矩阵里。 思路是二分法&#xff0c;可以将整个矩…

StringBoot编程式事务与声明式事务,给大家安排上!

一、前言 长文警告&#xff0c;事实上我不愿意写太长的文章&#xff0c;一面是太冗余&#xff0c;一方面读者容易疲倦&#xff0c;但是只要是涉及到源码级别的&#xff0c;就肯定篇幅不短&#xff0c;因为太短肯定没意义也解释不清楚&#xff0c;但是相信&#xff0c;耐心看完这…

窗口淡入淡出效果的实现

1. 简介函数: SetLayeredWindowAttributes HeaderDeclared in Winuser.h, include Windows.hImport libraryUser32.libMinimum operating systemsWindows 2000所以在98系统下&#xff0c;并不支持2. 属性现在我们直接通过DLL来调用,所以未包含头文件,可以直接使用值来操作.以下…

“金三银四”春招指南!靠着这份面试题跟答案,就是这么简单

前言 为什么要读Spring源码&#xff0c;有的人为了学习Spring中的先进思想&#xff0c;也有的人是为了更好的理解设计模式&#xff0c;当然也有很大一部分小伙伴是为了应付面试&#xff0c;Spring Bean的生命周期啦&#xff0c;Spring AOP的原理啦&#xff0c;Spring IoC的原理…

进程调试--数组溢出,影响其他变量

一直做的棋牌系统,调试是个问题,因为要启动的是另一个进程.所以一直多是以输出文件的方式来进行的.确实有些BUG输出文件的方式并不能解决和找到问题.我先来描述一下碰到的问题: 其中一个int m_nSize变量一般只有两个值(0或者1),在运行过程过突然变成-1,所以造成图片数组导入异…