LeetCode热题100--739. 每日温度--中等

题目

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answeri 是指对于第 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

题解

java 复制代码
class Solution {
    public int[] dailyTemperatures(int[] T) {
        int length = T.length;
        int[] result = new int[length];

        //从右向左遍历
        for (int i = length - 2; i >= 0; i--) {
            // j+= result[j]是利用已经有的结果进行跳跃
            for (int j = i + 1; j < length; j+= result[j]) {
                if (T[j] > T[i]) {
                    result[i] = j - i;
                    break;
                } else if (result[j] == 0) { //遇到0表示后面不会有更大的值,那当然当前值就应该也为0
                    result[i] = 0;
                    break;
                }
            }
        }
    return result;
    }
}

解析

出自:每日温度 - Java

java 复制代码
public int[] dailyTemperatures(int[] T) { ... }   //定义一个方法,它接受一个整型数组并返回另一个整型数组。

int length = T.length; 
int[] result = new int[length];  //初始化我们的"result"数组,并给它分配输入数据的大小和维度。

for (int i = length - 2; i >= 0; i--) { ... }   //我们反着读取我们的"T"数组,从最后一个元素到第一个。这是为了能够利用我们已经做过的计算来跳过我们不需要再次做的计算(例如在同一迭代中找出更大的值的检查和赋值)。

for (int j = i + 1; j < length; j+= result[j]) { ... }  //这个循环试图找到T中的下一个较大的气温,它使用了我们已经计算过的值来跳过某些索引。我们每次增加`result[j]`是基于前面的结果(可能对同一迭代来说可能是零)

if (T[j] > T[i]) { ... } //如果当前的'j'索引上的值大于我们的'i'索引,我们计算出间隔并将其赋给我们的result数组中的'i'索引。
else if (result[j] == 0)  {...}//否则如果在接下来的索引上找不到更大的值(前面的循环已经处理了这个情况),我们认为该天的温度"没有等待更多的天数".

return result;   //这行代码完成整个函数。它将我们的结果数组作为输出返回给调用者。
相关推荐
代码山河40 分钟前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
在世修行1 小时前
智学文枢:题目流水线
python·多线程·状态机·pyside
梯度下降者1 小时前
零基础入门Python 爬虫
爬虫·python·数据分析·入门指南·webcrawler
UIU1143 小时前
P1233 [ICPC 2001 Taejon R] 木棍加工
数据结构·c++·算法·动态规划
“AI国潮设计-小江”3 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
论文复现现场3 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
ZhengEnCi3 小时前
用 AI 写代码为什么拼到最后还是拼人:算力瓶颈与领域专家提示词的本质差异
算法·架构
benchmark_cc4 小时前
用 Python 拉 A 股全市场实时快照:Notebook 请求、结果校验与易错点
python·数据分析·pandas·量化交易·股票数据·quantdash
伞伞悦读4 小时前
【第70期】Adam二阶矩不是方差:偏差校正、动量与AdamW完整实验
python
秋天的怀念_David4 小时前
第二十一夜 · 数字黑洞与西西弗斯的惩罚
java·程序人生·算法