算法题汇总链接
题目链接
给定一个整数数组 arr ,返回 arr 的 最大湍流子数组的长度 。
如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是 湍流子数组 。
ps: 就是元素两两之间的增长情况是 ↗↘↗↘↗… 这样
f[i] =
b>a, g[i-1] + 1
b<=a, 1
g[i] =
b>=a, 1
b
代码如下:
class Solution {
public:
int maxTurbulenceSize(vector<int>& arr) {
size_t n = arr.size();
vector<size_t> f(n, 1); // 为上
auto g = f; // 为下
size_t maxRes = 1;
for(size_t i = 1; i < n; i++)
{
if(arr[i] > arr[i-1])
{
f[i] = g[i-1] + 1;
}
else if(arr[i] < arr[i-1])
{
g[i] = f[i-1] + 1;
}
maxRes = max(max(g[i], f[i]), maxRes);
}
return maxRes;
}
};
如果本文对你有些帮助,欢迎 点赞 收藏 关注,你的支持是对作者大大莫大的鼓励!!(✿◡‿◡) 若有差错恳请留言指正~~