【LeetCode】最长湍流子数组
题目
当 A 的子数组 A[i], A[i+1], ..., A[j] 满足下列条件时,我们称其为湍流子数组:
若 i <= k < j,当 k 为奇数时, A[k] > A[k+1],且当 k 为偶数时,A[k] < A[k+1];
或 若 i <= k < j,当 k 为偶数时,A[k] > A[k+1] ,且当 k 为奇数时, A[k] < A[k+1]。
也就是说,如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是湍流子数组。
返回 A 的最大湍流子数组的长度。
代码
复制代码
总结
照例,这个题目应该用滑动窗口来解。自己写完之后,还是觉的 DP 更加好理解一些。
上述方法还可以继续优化,空间复杂度可以优化成 O(1),decreased,increased 可以用一个变量来记录状态值,从而优化空间复杂度。
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/9066b5a22a529900d919e7b08】。文章转载请联系作者。
评论