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;   //这行代码完成整个函数。它将我们的结果数组作为输出返回给调用者。
相关推荐
怕浪猫33 分钟前
Electron 系列文章封面图
算法·架构·前端框架
黄忠2 小时前
01-系统架构设计-LangGraph状态机与多源异构RAG
python
zzzzzz3102 小时前
假如我是掘金管理员,我先给评论区装个'代码审查'系统
python·程序员·机器人
砍材农夫2 小时前
python环境|conda安装和使用(2)
后端·python
徐小夕3 小时前
JitWord 3.0 正式发布,高精度Word异构解析+复杂组件兼容,打造web端协同Word编辑器
前端·vue.js·算法
程序员龙叔15 小时前
编写高质量 Skill 系列 -- 如何设计需求分析与用例生成的 SKILL
自动化测试·软件测试·python·软件测试工程师·接口测试·性能测试·skill·ai测试
用户83562907805118 小时前
使用 Python 操作 Word 内容控件
后端·python
通信小呆呆18 小时前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
benben04418 小时前
强化学习之DQN算法族(基于gymnasium开发)
算法