LeetCode LCP 61. 气温变化趋势

63 阅读1分钟

题目

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

  • 若第 i+1 天的气温 高于 第 i 天,为 上升 趋势
  • 若第 i+1 天的气温 等于 第 i 天,为 平稳 趋势
  • 若第 i+1 天的气温 低于 第 i 天,为 下降 趋势

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

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

思路

题目要求返回趋势相同的最大时间.

这题需要一个变量来存储每段趋势相同的数量, 需要一个变量来存储最大值

遍历数组, 在内层循环使用 while 来保证趋势相同时的天数.

然后比较这次连续的天数与最大值的大小;

注意 在 内层循环的时候也要判断 n 的 大小, 避免造成索引越界

代码

class Solution {
    public int temperatureTrend(int[] temperatureA, int[] temperatureB) {
        int ans = 0;
        int n = temperatureA.length;
        for (int i = 1; i < n; i++) {
            int count = 0;
            while (i < n && (temperatureA[i - 1] > temperatureA[i] && temperatureB[i - 1] > temperatureB[i]
                    || temperatureA[i - 1] < temperatureA[i] && temperatureB[i - 1] < temperatureB[i]
                    || temperatureA[i - 1] == temperatureA[i] && temperatureB[i - 1] == temperatureB[i])) {
                count++;
                i++;
            }
            ans = Math.max(ans, count);
        }
        return ans;
    }
}

题解

灵神题解: leetcode.cn/problems/6C…
灵神的代码太优雅了o(╥﹏╥)o