当前位置: 首页 > news >正文

力扣题解( 最长湍流子数组)

978. 最长湍流子数组

已解答

给定一个整数数组 arr ,返回 arr 的 最大湍流子数组的长度 

如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是 湍流子数组 。

更正式地来说,当 arr 的子数组 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]

本题看似例子很长,实则很简单,即湍流数组形状为W型或者M型即可(认为中间比两边高,或者中间比两边低,然后每间隔一个都符合这个定律)(其实所谓w,m也不过就是开始位置差了一个而已)。因此做法也很简单,分情况讨论即可。注意本题如果前后两个元素相等,则必定构不成湍流数组。

对于偶数位置高的,若第i个仍满足这个定律,则长度加1,而这个满足则偶数位置低的那个一定不满足,因此那个的长度变为0.对奇数位置高的同理。

class Solution {
public:int maxTurbulenceSize(vector<int>& arr) {int n=arr.size();vector<int>m(n,0);vector<int>w(n,0);m[0]=w[0]=1;for(int i=1;i<n;i++){if(i%2==1){//n为偶if(arr[i]>arr[i-1]){m[i]=m[i-1]+1;w[i]=1;}else if(arr[i]<arr[i-1]){w[i]=w[i-1]+1;m[i]=1;}else{m[i]=w[i]=1;}}else {//n为奇if(arr[i]<arr[i-1]){m[i]=m[i-1]+1;w[i]=1;}else if(arr[i]>arr[i-1]){w[i]=w[i-1]+1;m[i]=1;}else{m[i]=w[i]=1;}}}int ret=1;for(int i=1;i<n;i++){int nm=max(m[i],w[i]);ret=max(nm,ret);}return ret;}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • R语言学习笔记5-数据结构-多维数组
  • 如何通过JSON-RPC向以太坊链发送签名交易数据?
  • Open3D 点云配准精度评价指标-RMSE
  • 华为机考真题 -- 螺旋数字矩阵
  • “金山-讯飞”杯2024年武汉理工大学程序设计竞赛 A. Mobiusp败走***(思维题-点双连通分量、连通性)
  • 51单片机:电脑通过串口控制LED亮灭(附溢出率和波特率详解)
  • SVN 解决冲突
  • 《算法笔记》总结No.6——贪心
  • Elasticsearch:Node.js ECS 日志记录 - Morgan
  • 【全面介绍语言模型的原理,实战和评估】
  • 使用Python绘制气泡图
  • 共话未来 | 人大金仓即将亮相TDBC 2024可信数据库发展大会
  • linux_进程概念——理解冯诺依曼体系结构
  • C基础day8
  • 微软推出全新的学习网站 Microsoft Learn
  • [PHP内核探索]PHP中的哈希表
  • 〔开发系列〕一次关于小程序开发的深度总结
  • chrome扩展demo1-小时钟
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • HTML-表单
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Promise面试题,控制异步流程
  • Python连接Oracle
  • Python爬虫--- 1.3 BS4库的解析器
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • VUE es6技巧写法(持续更新中~~~)
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 老板让我十分钟上手nx-admin
  • 数据可视化之 Sankey 桑基图的实现
  • 微信小程序开发问题汇总
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 详解移动APP与web APP的区别
  • 小程序 setData 学问多
  • 一份游戏开发学习路线
  • (23)Linux的软硬连接
  • (ibm)Java 语言的 XPath API
  • (web自动化测试+python)1
  • (二十四)Flask之flask-session组件
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (过滤器)Filter和(监听器)listener
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (原创)可支持最大高度的NestedScrollView
  • (杂交版)植物大战僵尸
  • **PHP二维数组遍历时同时赋值
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • ... 是什么 ?... 有什么用处?
  • .gitignore不生效的解决方案
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Core Web APi类库如何内嵌运行?
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET/C#⾯试题汇总系列:⾯向对象
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .NET和.COM和.CN域名区别
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2