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

  大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博客 ,同时正在尝试在B站中做一些内容分享,B站主页为: 亓官劼的B站主页

本文原创为亓官劼,请大家支持原创,部分平台一直在恶意盗取博主的文章!!!
若需联系博主,可以联系本人微信:qiguanjie2015


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. 1 <= A.length <= 40000
  2. 0 <= A[i] <= 10^9

解题思路

这题有很多解法,双指针,DP都可以。这里数据量不大,可以直接双指针写。初始化左右指针为0,

  • 如果左右指针相同,即指向同一个位置时,如果当前数和下一个一样,则一起右移,如果不同,则右指针移动,左指针不动,当前两个数是满足的。

  • 如果左右指针不同,当前右指针数比左右两个都小,或者比左右两个都大,则右移,否则重置左指针

算法实现

class Solution {public:int maxTurbulenceSize(vector<int>& arr) {int len = arr.size(), res = 1, left = 0, right = 0;while (right < len - 1) {if (left == right) {// 左右指针相同时,如果当前数和下一个一样,则一起右移,如果不同,则右指针移动,左指针不动,当前两个数是满足的if (arr[left] == arr[left + 1]) {left++;}right++;} else {// 如果当前右指针数比左右两个都小,或者比左右两个都大,则右移,否则重置左指针if (arr[right - 1] < arr[right] && arr[right] > arr[right + 1]) {right++;} else if (arr[right - 1] > arr[right] && arr[right] < arr[right + 1]) {right++;} else {left = right;}}res = max(res, right - left + 1);}return res;}
};

C++描述 LeetCode 978. 最长湍流子数组相关推荐

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

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

  2. LeetCode 978 最长湍流子数组

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

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

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

  4. LeetCode 978. 最长湍流子数组(DP)

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

  5. 2021年2月8日 Leetcode每日一题:978. 最长湍流子数组

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

  6. 湍流参数计算c语言,力扣978.最长湍流子数组-C语言

    题目 最长湍流子数组 当 A 的子数组 A[i], A[i+1], ..., A[j] 知足下列条件时,咱们称其为湍流子数组:算法 若 i <= k < j,当 k 为奇数时, A[k] ...

  7. 978. 最长湍流子数组

    链接:978. 最长湍流子数组 题解:https://leetcode-cn.com/problems/longest-turbulent-subarray/solution/zui-chang-tu ...

  8. leetcode 978. Longest Turbulent Subarray | 978. 最长湍流子数组(Java)

    题目 https://leetcode.com/problems/longest-turbulent-subarray/ 题解 虽然 similar questions 没列出来,但能想到之前做过的( ...

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

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

最新文章

  1. 开源的 6 条社会契约
  2. 设定printf在终端输出的颜色
  3. Android 基础教程之-------Android ProgressBar的使用!
  4. Grails动态下拉菜单
  5. LeetCode 1516. Move Sub-Tree of N-Ary Tree(DFS)
  6. ubuntu php mysql5.6_Ubuntu16.04搭建php5.6Web服务器环境
  7. 流水灯verilog实验原理_流水灯实验
  8. 2.14 向量化 logistic 回归的梯度输出
  9. 台式电脑一直跳一个计算机页面出来,我的电脑界面上莫名其妙的多出了好几个IE浏览器拜托各位了 3Q...
  10. uniapp ---- 添加分页
  11. SHELL 分析 列出当天访问次数最多的IP
  12. 【前端 · 面试 】HTTP 总结(九)—— HTTP 协商缓存
  13. IBM分布式深度学习技术将语音识别训练时间从一周缩短到11小时
  14. html______1
  15. 一个完整的产品设计都要哪些设计流程
  16. java7 pc6_GitHub - ShingmoYeung/oss-sdk-java at ec7c09757dcbcb2b934f46b12ab71f3e14d2df72
  17. Bert源代码(二)模型
  18. python爬虫基础及实例---代码经过实测
  19. 回顾12306 成长的烦恼
  20. 用excel替换word里的文字,deepcopy

热门文章

  1. 供应点击化学PEG试剂Azide-PEG-Rhodamine B,叠氮聚乙二醇罗丹明
  2. 中国通信设备商占全球5G设备市场近半数份额,强化研发自主芯片
  3. JAVA电子产品专卖电商系统计算机毕业设计Mybatis+系统+数据库+调试部署
  4. 请问今年电焊工的工资是多少,一般工作多长时间啊
  5. UILabel上显示笑脸符号
  6. 程序员应该读的 7 本经典书籍
  7. CSS学习笔记(一) CSS基础+CSS3新特性
  8. XP win7双系统安装及激活
  9. 2019(第八届)国际桥梁与隧道技术大会将于2019年5月在上海举办!
  10. 硬盘有坏扇区怎么办?数据还能恢复吗?