题目
力扣城计划在两地设立「力扣嘉年华」的分会场,气象小组正在分析两地区的气温变化趋势,对于第 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