重温算法之每日温度

简介: 在本题中使用栈作为媒介确实要比使用MAP好很多,而题友的想法更好,不用借助其他媒介,节省了使用空间,感觉自己还是很愚笨,在算法题上有先入为主的思想,比较容易吃亏,还是得多思考,换角度思考,不怎么做还能怎么做。

一.题目介绍


1.题目来源


链接:LeetCode


2.题目


给定一个整数数组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]

示例 3:

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

提示:

1 <= temperatures.length <= 105

30 <= temperatures[i] <= 100


二.具体实现


1.实现思路


按题目的要求是返回比前一日高的温度集合,如果没有则记为0,那怎么去比较就是本题的重点了,我的想法是使用栈来实现,利用栈的特点以天数作为栈元素,对栈内元素进行比较,与前一个元素相比是小于则直接进栈,是大于则进行比较,最终得到结果。


2.实现代码


1)自己的实现方式

public int[] dailyTemperatures(int[] temperatures) {
    //采用单调栈,栈ding的元素和栈内的元素比较,小于直接进栈,大于则作比较
    //注意栈内存的是天数
    Deque<Integer> deque = new ArrayDeque<>();
    int[] res = new int[temperatures.length];
    for (int i = 0; i < temperatures.length; i++) {
        while (!deque.isEmpty() && temperatures[deque.peek()] < temperatures[i]) {
            int idx = deque.pop();
            res[idx] = i - idx;
        }
        deque.push(i);
    }
    return res;
}
复制代码


2)题友的实现方式


针对每个温度值 向后进行依次搜索 ,找到比当前温度更高的值。其原理是从左到右除了最后一个数其他所有的数都遍历一次,最后一个数据对应的结果肯定是0,就不需要计算,遍历的时候,每个数都去向后数,直到找到比它大的数,数的次数就是对应输出的值。

代码:微信截图_20220531181415.png


3.运行结果

微信截图_20220531180848.png

微信截图_20220531180944.png


三.题后思考


在本题中使用栈作为媒介确实要比使用MAP好很多,而题友的想法更好,不用借助其他媒介,节省了使用空间,感觉自己还是很愚笨,在算法题上有先入为主的思想,比较容易吃亏,还是得多思考,换角度思考,不怎么做还能怎么做。

目录
相关文章
|
7月前
|
算法
代码随想录算法训练营第五十七天 | LeetCode 739. 每日温度、496. 下一个更大元素 I
代码随想录算法训练营第五十七天 | LeetCode 739. 每日温度、496. 下一个更大元素 I
52 3
|
存储 算法 索引
算法修炼Day58|● 739. 每日温度 ● 496.下一个更大元素 I
算法修炼Day58|● 739. 每日温度 ● 496.下一个更大元素 I
|
7月前
|
算法
基于Google Earth Engine的Landsat单窗算法地表温度(LST)反演
基于Google Earth Engine的Landsat单窗算法地表温度(LST)反演
358 2
|
7月前
|
传感器 算法 数据挖掘
基于ENVI与ERDAS的Landsat 7 ETM+单窗算法地表温度(LST)反演
基于ENVI与ERDAS的Landsat 7 ETM+单窗算法地表温度(LST)反演
148 1
|
机器学习/深度学习 传感器 算法
基于有限体积法 (FVM) 和 SIMPLE 算法求解平行板之间层流的速度、压力和温度附 MATLAB 代码
基于有限体积法 (FVM) 和 SIMPLE 算法求解平行板之间层流的速度、压力和温度附 MATLAB 代码
|
机器学习/深度学习 传感器 监控
【BP时序预测】基于鲸鱼算法优化BP神经网络实现温度数据预测附matlab代码
【BP时序预测】基于鲸鱼算法优化BP神经网络实现温度数据预测附matlab代码
|
算法
重温算法之排序链表
这个题目有点麻烦,如果是使用的暴力法,会直接超时,使用自顶向下的归并排序的话,其实也没有多大的提升,目前是没有好的解决方案的,后期继续思考吧。
134 0
重温算法之排序链表
|
算法 测试技术
重温算法之括号生成
对于需要一直寻找到最终结果或者条件的题目,一般使用回溯算法,还有就是不要忽略题目的隐藏的一些点,如果忽略,可能某个测试用例就会报错,同时也要做判空处理。
102 0
重温算法之括号生成
|
算法
重温算法之有效的括号
这个题为什么借助栈会变得很容易呢,因为都是在利用栈先进先出的特点,然后匹配左右括号,如果只有其中之一则不满足,不满足的从栈里取出,剩下的就是满足条件的。
119 0
重温算法之有效的括号
|
算法
重温算法之单词搜索
对于回溯算法大家都不陌生,为此还有题友写成了回溯算法的模板,只要按模板套题都能灵活解题,算是开辟了一种做题的方式吧,有的算法题还是很磨人的。
142 0
重温算法之单词搜索