1. 题目

当 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 的最大湍流子数组的长度

示例 1:
输入:[9,4,2,10,7,8,8,1,9]
输出:5
解释:(A[1] > A[2] < A[3] > A[4] < A[5])示例 2:
输入:[4,8,12,16]
输出:2示例 3:
输入:[100]
输出:1提示:
1 <= A.length <= 40000
0 <= A[i] <= 10^9

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-turbulent-subarray
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 两个dp数组,dp0,表示以下降结束,dp1表示以上升结束
class Solution { // c++
public:int maxTurbulenceSize(vector<int>& A) {int i, n = A.size(), maxlen = 1;vector<int> dp0(n,1), dp1(n,1);//dp0,表示以下降结束,dp1表示以上升结束// 到位置 i 处的最长长度for(i = 1; i < n; i++){if(A[i-1] > A[i])//需要前面是上升,现在是下降dp0[i] = dp1[i-1] + 1;else if(A[i-1] < A[i])dp1[i] = dp0[i-1] + 1;maxlen = max(maxlen, max(dp0[i],dp1[i]));}return maxlen;}
};

164 ms 41.2 MB

class Solution:  # py3def maxTurbulenceSize(self, A: List[int]) -> int:n = len(A)maxlen = 1dp0 = [1]*ndp1 = [1]*nfor i in range(1,n):if A[i-1] > A[i]:dp0[i] = dp1[i-1]+1elif A[i-1] < A[i]:dp1[i] = dp0[i-1]+1maxlen = max(maxlen, max(dp0[i], dp1[i]))return maxlen

876 ms 17.6 MB

LeetCode 978. 最长湍流子数组(DP)相关推荐

  1. leetcode 978. 最长湍流子数组(动态规划)

    978. 最长湍流子数组 当 A 的子数组 A[i], A[i+1], -, A[j] 满足下列条件时,我们称其为湍流子数组: 若 i <= k < j,当 k 为奇数时, A[k] &g ...

  2. leetcode 978. 最长湍流子数组(滑动窗口)

    当 A 的子数组 A[i], A[i+1], -, A[j] 满足下列条件时,我们称其为湍流子数组: 若 i <= k < j,当 k 为奇数时, A[k] > A[k+1],且当 ...

  3. 力扣978最长湍流子数组——Python解答

    我们采用DP解法 up = [1] * len(arr)down = [1] * len(arr)ans = 1for i in range(1, len(arr)):if arr[i] > a ...

  4. C++描述 LeetCode 978. 最长湍流子数组

    C++描述 LeetCode 978. 最长湍流子数组   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客,唯一 ...

  5. LeetCode 978 最长湍流子数组

    LeetCode 978 最长湍流子数组 题目链接 当 A 的子数组 A[i], A[i+1], -, A[j] 满足下列条件时,我们称其为湍流子数组: 若 i <= k < j,当 k ...

  6. Leetcode 978. 最长湍流子数组

    978. 最长湍流子数组 显示英文描述 我的提交返回竞赛 用户通过次数196 用户尝试次数229 通过次数200 提交次数567 题目难度Medium 当 A 的子数组 A[i], A[i+1], . ...

  7. LeetCode——978. 最长湍流子数组(Longest Turbulent Subarray)——分析及代码(Java)

    LeetCode--978. 最长湍流子数组[Longest Turbulent Subarray]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划(一维数组) (1)思路 (2) ...

  8. 【线性 dp】B003_LC_最长湍流子数组(读题 dp / 双指针)

    一.Problem 当 A 的子数组 A[i], A[i+1], -, A[j] 满足下列条件时,我们称其为湍流子数组: 若 i <= k < j,当 k 为奇数时, A[k] > ...

  9. [Swift]LeetCode978. 最长湍流子数组 | Longest Turbulent Subarray

    原文地址:https://www.cnblogs.com/strengthen/p/10294636.html A subarray A[i], A[i+1], ..., A[j] of A is s ...

最新文章

  1. 在多变环境中长期定位和建图的通用框架
  2. poj1503(高精度模拟加法)
  3. Razor视图出现重复的解决方法
  4. python批量下载网页文件-Python批量下载网页图片详细教程
  5. linux关闭和开启防火墙(Ubuntu、centos、Redhat)
  6. Linux调度系统全景指南(下篇)
  7. 如何建立自己的知识体系?(摘)
  8. 拼多多否认对极兔快递“政策倾斜”;86版西游记“红孩儿”成中科院博士;AirTag遭破解 | 极客头条...
  9. 12、Linux一级子目录学习
  10. xcode 重新来过openssl项目历程
  11. ‘vue-cli-service' 不是内部或外部命令,也不是可运行的程序或批处理文件的报错
  12. Javaweb项目各个模块的用途
  13. 大三学生前端实习经验分享
  14. 0704暑假集训前的欢乐大杂烩总结
  15. HDU-6468 zyb的面试(模拟十叉树+dfs)
  16. 数值微分 python代码实现
  17. 九种引人瞩目的开源大数据技术
  18. A geometric interpretation of the covariance matrix(reproduced)
  19. 计算机专业英语积累(包括前端和后端常用的)~持续更新
  20. 项目_MySQL比较字符大小的小坑

热门文章

  1. 计算机科学和建筑设计结合,智能化建筑中计算机科学与技术的应用
  2. python 爬取大乐透开奖结果
  3. php公钥模数,php – 如何从公共指数和RSA模数生成DER / PEM证书?
  4. DVWA-SQL注入
  5. Python 如何调用 Java
  6. angularjs 表单验证 和 页面初始化闪烁
  7. 网络动态负载均衡算法分析
  8. 反馈电路中相位补偿,到底是什么鬼?
  9. Qt值得学习吗?详解Qt的几种开发方式
  10. 生命很短,我用tldr