LCP 61-气温变化趋势

Raphael Liu Lv10

力扣城计划在两地设立「力扣嘉年华」的分会场,气象小组正在分析两地区的气温变化趋势,对于第 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.png](https://pic.leetcode-
cn.com/1663902654-hlrSvs-image.png){:width=1000px} 示例 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
```cpp
class Solution {
public:
int temperatureTrend(vector<int>& temperatureA, vector<int>& temperatureB) {
vector<int> a, b;
for (int i = 1; i < temperatureA.size(); ++i) {
if (temperatureA[i] - temperatureA[i - 1] > 0) {
a.push_back(1);
} else if (temperatureA[i] - temperatureA[i - 1] == 0) {
a.push_back(0);
} else {
a.push_back(-1);
}
}

for (int i = 1; i < temperatureB.size(); ++i) {
if (temperatureB[i] - temperatureB[i - 1] > 0) {
b.push_back(1);
} else if (temperatureB[i] - temperatureB[i - 1] == 0) {
b.push_back(0);
} else {
b.push_back(-1);
}
}

int res = 0, cnt = 0;;
for (int i = 0; i < a.size(); ++i) {
if (a[i] != b[i]) {
cnt = 0;
} else {
cnt++;
}
res = std::max(res, cnt);
}
return res;
}
};

 Comments
On this page
LCP 61-气温变化趋势