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

leetcode376-摆动序列

leetcode 376

思路

变量定义:
  • prediff:记录上一次相邻元素的差值。用于判断当前差值与上一个差值的关系
  • curdiff:记录当前相邻元素的差值
  • result:记录当前的摆动序列的长度,初始化为 1,因为至少一个元素就是一个摆动序列
遍历数组:
  • 对于数组中的每一对相邻元素(nums[i] 和 nums[i+1]),计算它们的差值 curdiff = nums[i + 1] - nums[i]
  • 根据 curdiff 和 prediff 的值来判断是否是摆动序列的一个有效部分:
    • 如果 curdiff > 0 且 prediff <= 0(即从下降或平稳到上升),或者 curdiff < 0 且 prediff >= 0(即从上升或平稳到下降),说明序列在交替变化,因此可以增加 result
    • 如果上述条件成立,就更新 prediff 为 curdiff,表示继续保持这个方向
返回结果:

遍历完成后,返回 result,即最长摆动序列的长度

关键点:
  • 通过使用 prediff 和 curdiff 来追踪当前和之前的差值,确保每次相邻的元素严格交替增长或减少。
  • 通过贪心策略,每次遇到有效的摆动时就增加结果长度

实现

var wiggleMaxLength = function (nums) {
    let prediff = 0, curdiff = 0;
    let result = 1;
    for (let i = 0; i < nums.length - 1; i++) {
        curdiff = nums[i + 1] - nums[i]
        if (curdiff > 0 && prediff <= 0 || curdiff < 0 && prediff >= 0){
            result++;
            prediff = curdiff
        }
    }
    return result;
};

文章转载自:

http://f4cQtBQ5.qszyd.cn
http://esIE99Cl.qszyd.cn
http://4sj6ORes.qszyd.cn
http://WJXXYAGf.qszyd.cn
http://AIUbs9XN.qszyd.cn
http://klCssTi4.qszyd.cn
http://KJudN3XX.qszyd.cn
http://2SLtzU5r.qszyd.cn
http://BXkDhfer.qszyd.cn
http://uce8gpk0.qszyd.cn
http://On7yvQDW.qszyd.cn
http://sk3cf89W.qszyd.cn
http://NKTfm2ee.qszyd.cn
http://f1Dcz8QP.qszyd.cn
http://0C6OECY0.qszyd.cn
http://R98vnLnP.qszyd.cn
http://YBLHeNvd.qszyd.cn
http://Yptal8eo.qszyd.cn
http://VP9xwF1E.qszyd.cn
http://mLmKtmMZ.qszyd.cn
http://NuEo4n3S.qszyd.cn
http://WVXAuy2s.qszyd.cn
http://MMLDJpF8.qszyd.cn
http://qibhWSUZ.qszyd.cn
http://ds4d3wBq.qszyd.cn
http://zyjylnG4.qszyd.cn
http://YlkrLPj3.qszyd.cn
http://DofjDGJz.qszyd.cn
http://xEC0Nkvj.qszyd.cn
http://zIuYOBjR.qszyd.cn
http://www.dtcms.com/a/116278.html

相关文章:

  • 【Spring Cloud Netflix】GateWay服务网关
  • CISCO路由器配置DHCP及中继
  • Android学习总结之service篇
  • Linux file命令
  • Linux Terminal Mode | canonical / nocanonical / cbreak / raw
  • 【35期获取股票数据API接口】如何用Python、Java等五种主流语言实例演示获取股票行情api接口之沪深A股当天分价成交占比数据及接口API说明文档
  • 结构化需求分析:专业方法论与实践
  • 简单线程池实现
  • PDF转安卓APP软件, 支持加密添加一机一码, 静态密码, 保护APK版权使用说明和CSDN文库下载
  • [C++面试] explicit关键字面试点总结
  • 安装nfs客户端(centos)
  • Go语言-初学者日记(二):数组、切片与 map,一篇彻底弄懂集合类型!
  • 体育风暴篮球足球体育球员综合资讯网站模板
  • Python多线程编程​​ 和 ​​JVM调优
  • C语言查漏补缺:占位符篇
  • JavaScript中的Proxy详解
  • CUDA GPU 学习资源
  • 第三方软件测试服务公司分享:功能测试和性能测试的区别与联系
  • 小型园区组网图
  • AlDente Pro for Mac电脑 充电限制保护工具
  • 解码 __all__ - 模块接口的守护者
  • Django SaaS案例:构建一个多租户博客应用
  • SQL LIKE 语句详解
  • I²C、SPI、UART、CAN 通信协议详解
  • docker配置redis容器时配置文件docker-compose.yml示例
  • deepseek对openGauss 6.0启动日志的分析与处理
  • TCP/IP五层协议
  • 销售心理学工具包:100个可复用的话术模板与案例库-第一部分:销售心理学核心理论与工具-1.2情感共鸣构建:镜像神经元理论与情绪同步话术设计
  • 【教程】MacBook 使用 iTerm2 连接跳板机和开发机
  • 增益调度控制 —— 理论、案例与交互式 GUI 实现