侧边栏壁纸
博主头像
GabrielxD

列車は必ず次の駅へ。では舞台は?私たちは?

  • 累计撰写 471 篇文章
  • 累计创建 108 个标签
  • 累计收到 9 条评论

目 录CONTENT

文章目录

【模拟】气温变化趋势【LCCUP 2022秋季赛】

GabrielxD
2022-09-25 / 0 评论 / 0 点赞 / 21 阅读 / 461 字 / 正在检测是否收录...

题目

LCP 61. 气温变化趋势


力扣城计划在两地设立「力扣嘉年华」的分会场,气象小组正在分析两地区的气温变化趋势,对于第 i ~ (i+1) 天的气温变化趋势,将根据以下规则判断:

若第 i+1 天的气温 高于 第 i 天,为 上升 趋势
若第 i+1 天的气温 等于 第 i 天,为 平稳 趋势
若第 i+1 天的气温 低于 第 i 天,为 下降 趋势
已知 temperatureA[i]temperatureB[i] 分别表示第 i 天两地区的气温。
组委会希望找到一段天数尽可能多,且两地气温变化趋势相同的时间举办嘉年华活动。请分析并返回两地气温变化趋势相同的最大连续天数

即最大的 n,使得第 i~i+n 天之间,两地气温变化趋势相同

示例 1:

输入:
temperatureA = [21,18,18,18,31]
temperatureB = [34,32,16,16,17]
输出:2
解释:如下表所示, 第 2~4 天两地气温变化趋势相同,且持续时间最长,因此返回 4-2=2

image-20220925213043391

示例 2:

输入:
temperatureA = [5,10,16,-6,15,11,3]
temperatureB = [16,22,23,23,25,3,-16]
输出:3

提示:

  • 2 <= temperatureA.length == temperatureB.length <= 1000
  • -20 <= temperatureA[i], temperatureB[i] <= 40

解题

方法一:模拟 遍历

思路

按照题目模拟即可,维护最大连续天数。

代码

class Solution {
    public int temperatureTrend(int[] temperatureA, int[] temperatureB) {
        int n = temperatureA.length;
        int max = 0, cont = 0;
        for (int i = 0; i < n - 1; ++i) {
            int deltaA = temperatureA[i + 1] - temperatureA[i];
            int deltaB = temperatureB[i + 1] - temperatureB[i];
            int a = deltaA == 0 ? 0 : (deltaA > 0 ? 1 : -1);
            int b = deltaB == 0 ? 0 : (deltaB > 0 ? 1 : -1);
            if (a == b) ++cont;
            else {
                max = Math.max(max, cont);
                cont = 0;
            }
        }
        return Math.max(max, cont);
    }
}
0

评论区