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

Leetcode 376 摆动序列

题意理解

        如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 

        如果是摆动序列,前后差值呈正负交替出现

        为保证摆动序列尽可能的长,我们可以尽可能的保留峰值,,删除上下坡的中间值,或平坡值。

解题思路

        已知要删除一些值来保证摆动序列的话,应该保留峰值,删除上下坡、平坡的值。

        并且摆动序列两数差值正负交替出现。

        所以我们需要一个值preDiff来记录前一个数和当前数的差值。

        还需要一个指向当前值,和后一个值得指针,来计算两数差值,看两者是否正负交替出现。

1.贪心解题

       为实现该算法解题,我们需要定义cur和after得指针,来记录当前差值

        需要定义preDiff来记录前一个差值,判断当前值是否是峰值,保留峰值,删除坡值。

        这里的删除并不是真正的删除,指示不记录此处的result++

        result来记录正负值变化次数n,指示序列应为n+1

 public int wiggleMaxLength(int[] nums) {int result=0;int preDiff=0;for(int i=0;i<nums.length-1;i++){if((preDiff>=0&&nums[i+1]-nums[i]<0)||(preDiff<=0&&nums[i+1]-nums[i]>0)){result++;//只记录有正负性的preDiffpreDiff=nums[i+1]-nums[i];}}//result记录了中间值正负变化的次数n,指示n+1个数的序列,有n个中间值return result+1;}

2.分析

时间复杂度:O(n)

空间复杂度:O(n)

http://www.lryc.cn/news/262985.html

相关文章:

  • 51单片机控制1602LCD显示屏输出自定义字符二
  • HarmonyOS自学-Day2(@Builder装饰器)
  • bottom-up-attention-vqa-master 成功复现!!!
  • BigDecimal中divide方法详解
  • 视频推拉流EasyDSS互联网直播/点播平台构建户外无人机航拍直播解决方案
  • 行为型设计模式-策略模式(Strategy Pattern)
  • html中RGB和RGBA颜色表示法
  • 【BEV感知】BEVFormer 融合多视角相机空间特征和时序特征的端到端框架 ECCV 2022
  • git拉取hugging face代码失败:443
  • 【赠书活动】OpenCV4工业缺陷检测的六种方法
  • 设计模式之创建型设计模式(一):单例模式 原型模式
  • Amazon CodeWhisperer 在 vscode 的应用
  • 【Java】基于fabric8io库操作k8s集群实战(pod、deployment、service、volume)
  • uniapp微信小程序下载保存图片流到本地,base64
  • 华为数通——企业双出口冗余
  • 送奶APP开发:终极指南
  • Ngnix之反向代理、负载均衡、动静分离
  • (C++)将x减到0的最小操作数--滑动窗口
  • 回答某位同学的问题:残差网络常用来分类,可以用于回归预测吗?
  • C语言初学5:运算符
  • 亿某通电子文档安全管理系统任意文件上传漏洞 CNVD-2023-59471
  • 产品入门第四讲:Axure动态面板
  • 【数据结构】哈希表算法总结
  • 微信小程序单图上传和多图上传
  • github入门基础操作
  • Android Studio(3.6.2版本)安装 java2smali 插件,java2smali 插件的使用方法简述
  • vscode使用remote ssh到server上 - Node进程吃满CPU
  • 如何在Go中使用日期和时间
  • 2023_Spark_实验二十九:Flume配置KafkaSink
  • Koa.js 入门手册:洋葱模型插件机制详解以及常用中间件