本文主要是介绍2024.6.21每日一题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
LeetCode
气温变化趋势
题目链接:LCP 61. 气温变化趋势 - 力扣(LeetCode)
题目描述
力扣城计划在两地设立「力扣嘉年华」的分会场,气象小组正在分析两地区的气温变化趋势,对于第 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
示例 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
思路
代码
C++
class Solution {
public:int temperatureTrend(vector<int>& a, vector<int>& b) {auto cmp = [](int x, int y) { return (x > y) - (x < y); };int ans = 0, same = 0;for (int i = 1; i < a.size(); i++) {if (cmp(a[i - 1], a[i]) == cmp(b[i - 1], b[i])) {ans = max(ans, ++same);} else {same = 0;}}return ans;}
};
Java
class Solution {public int temperatureTrend(int[] a, int[] b) {int ans = 0;int same = 0;for(int i = 1; i < a.length; i++){if(Integer.compare(a[i - 1],a[i]) == Integer.compare(b[i - 1],b[i])){ans = Math.max(ans, ++same);}else {same = 0;}}return ans;}
}
这篇关于2024.6.21每日一题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!