206.贪心算法:摆动序列(力扣)

news2024/10/5 9:03:59

代码展示 

class Solution {
public:
    int wiggleMaxLength(vector<int>& nums) 
    {
        if (nums.size() <= 1) return nums.size();  // 如果数组长度小于等于1,返回数组长度

        int curdiff = 0;  // 当前元素和前一个元素的差值
        int prediff = 0;  // 前一个差值
        int result = 1;   // 最长摇摆子序列的长度,初始化为1,因为至少有一个元素

        for (int i = 0; i < nums.size() - 1; i++) 
        {
            curdiff = nums[i + 1] - nums[i];  // 计算当前元素和下一个元素的差值

            // 如果当前差值和前一个差值符号不同(包括第一次比较的情况),并且当前差值不为0
            if ((prediff <= 0 && curdiff > 0) || (prediff >= 0 && curdiff < 0)) 
            {
                result++;       // 摇摆子序列长度加1
                prediff = curdiff; // 更新前一个差值为当前差值
            }
        }

        return result;  // 返回最长摇摆子序列的长度
    }
};

代码核心思想

  1. 处理特殊情况

    • 如果数组长度小于等于1,直接返回数组长度,因为这种情况下,摇摆子序列的长度就是数组本身的长度。
  2. 初始化变量

    • curdiff:当前元素和前一个元素的差值。
    • prediff:前一个差值,用于记录上一次的差值。
    • result:结果,表示最长摇摆子序列的长度,初始值为1,因为至少有一个元素可以作为摇摆子序列的一部分。
  3. 遍历数组

    • 从数组的第一个元素开始,逐个计算当前元素和下一个元素的差值 (curdiff)。
    • 如果当前差值和前一个差值的符号不同(即一个正一个负),或者当前差值是第一个差值:
      • 增加结果 result 的值。
      • 更新前一个差值 prediff 为当前差值 curdiff
  4. 返回结果

    • 返回计算得到的最长摇摆子序列的长度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1887751.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

品牌推广怎么样?掌握正确做法,让品牌大放异彩!

品牌推广对于初创公司来说是一项至关重要的任务。在市场众多品牌中&#xff0c;如何脱颖而出&#xff0c;是每个品牌方都要考虑的问题。 作为一名手工酸奶品牌的创始人&#xff0c;目前全国复制了100多家门店&#xff0c;我来分享下&#xff0c;如何推广&#xff0c;可以让品牌…

Git 基础-创建版本库 git init、添加到暂存区git add、查看状态git status、查看改动git diff

1.创建版本库 git init 在目录中创建新的 Git 仓库。 你可以在任何时候、任何目录中这么做&#xff0c;完全是本地化的。 在目录中执行 git init&#xff0c;就可以创建一个 Git 仓库了。 注意: 没事不要手动修改 .git 目录里面的文件&#xff0c;不然改乱了&#xff0c;可能就…

zabbix“专家坐诊”第244期问答

问题一 Q&#xff1a;请教一下&#xff0c;我的zabbix6.0配置的基于snmptrap上报的日志提取关键字推送告警&#xff0c;正则表达式能否帮忙看看怎么弄&#xff1f;我这配置的提示一直不正确&#xff1f; A&#xff1a;具体看一下这里的信息。 Q&#xff1a;这个我是直接复制的…

亚马逊卖家专属ERP系统,无任何隐形FY。

三千多终身使用的ERP&#xff0c;图片翻译、文本图片翻译&#xff0c;无任何隐藏fy&#xff0c;不限制授权店铺&#xff0c;不限制开通子账号。 现在来讲下我们店飞飞ERP的铺货功能。 点击数据采集&#xff0c;选择需要的产品&#xff0c;可以批量编辑、批量编辑价格、一键翻…

权限控制信息

查看权限控制信息 修改权限控制信息 chmod命令 作用&#xff1a;修改文件、文件夹的权限细节&#xff0c;即第一图中序号1的部分。只能是文件、文件夹所属用户或root用户有权修改。 语法&#xff1a;chmod [-R] 权限 文件或文件夹 选项&#xff1a; -R&#xff0c; 对文件夹内…

如何申请小牛翻译API,超简单哦~~~

1.【注册】或【登录】小牛翻译官网账号。 账号注册成功后&#xff0c;小牛翻译每天提供免费的100积分&#xff0c;积分是全平台通用的&#xff0c;100积分相当于20万字符/34个文档/34张图片/25次语音翻译。&#xff08;在线翻译和API服务均可用哦~&#xff09; 2.登录账号后&a…

非平稳信号的时频表示-基于本征模态函数(MATLAB)

时频分析思想萌芽于匈牙利物理学家 Gabor 在 1946 年所提出的 Gabor 展开理论&#xff0c;随后以此为基础发展出著名的线性时频变换方法—短时傅里叶变换。短时傅里叶变换假设分析信号在有限时长内具有平稳特性&#xff0c;它首先将时间与频率均为有限支撑的窗函数与分析信号进…

六西格玛培训:不只是理论,更是实战中的利器——张驰咨询

六西格玛作为一种强大的流程改进和质量管理工具&#xff0c;其应用范围已经远远超出了传统制造业的界限&#xff0c;逐步渗透到金融业、互联网以及新能源等前沿领域。以下张驰咨询将结合之前的分析&#xff0c;展示六西格玛培训在这些行业中的成功案例及其带来的深远影响。 制造…

【代码随想录】【算法训练营】【第56天】 [卡码98]所有可达路径

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 卡码网。 day 56&#xff0c;周二&#xff0c;继续ding~ 题目详情 [卡码98] 所有可达路径 题目描述 卡码98 所有可达路径 解题思路 前提&#xff1a; 思路&#xff1a; 重点&#xff1a; 代码实现 C语言…

Spring Cloud Alibaba-Nacos服务注册和配置中心

目录 概述下载安装 Nacos服务注册中心原理配置服务提供者配置服务消费者负载均衡 Nacos服务配置中心新建一个配置中心服务Nacos控制台配置历史配置回滚 Nacos数据模型三元组是什么默认值Service就是微服务Nacos图形界面三种方案加载配置DataId方案Group方案Namespace方案 文献参…

2024软件设计师经验贴(一考就过)

2024软件设计师经验贴&#xff08;一考就过&#xff09; 第一阶段、基础积累&#xff1a;把书读厚 这一阶段可以跟着视频、书籍或文章进行基础知识的学习。 推荐的视频系列&#xff1a; 「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 40–14.3设计模式 推荐的文…

C++编程(九)异常处理机制、模板、容器库

文章目录 一、异常处理机制&#xff08;一&#xff09;概念&#xff08;二&#xff09;语法格式&#xff08;三&#xff09;使用示例&#xff08;四&#xff09;异常处理库 二、模板&#xff08;一&#xff09;概念&#xff08;二&#xff09;函数模板&#xff08;三&#xff0…

生产者消费模式

前言&#x1f440;~ 上一章我们介绍设计模式中的单例模式&#xff0c;今天我们来讲讲生产者消费模式 阻塞队列&#xff08;重要&#xff09; 生产者消费模式&#xff08;重要&#xff09; 阻塞队列在生产者消费模型中的作用 标准库的阻塞队列 手动实现阻塞队列 如果各位对…

【python报错】已解决 ERROR: Could not find a version that satisfies the requirement

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 一、报错场景 在使用 pip 管理 Python 包时&#xff0c;您可能会遇到以下错误&#xff1a; ERROR: Could not find a version…

萌啦跨境工具箱有什么作用,萌啦跨境工具箱OZON营销神器

萌啦OZON数据平台&#xff0c;作为专为OZON平台商家打造的数据分析工具&#xff0c;集成了多种强大功能&#xff0c;旨在帮助商家在激烈的市场竞争中获得数据驱动的优势&#xff0c;实现精准运营与高效增长。那么萌啦跨境工具箱有什么作用&#xff1f;接下来介绍萌啦跨境工具箱…

opencv颜色识别,hsv采用滑块调节

识别效果如图所示&#xff0c;尽量排除了蓝色背景的干扰&#xff0c;hsv可用滑块进行调节&#xff0c;更加方便 import cv2 import numpy as np# 创建一个命名窗口&#xff0c;用于显示滑块 cv2.namedWindow("TrackBar")def nothing(x):pass# 创建滑块控件 cv2.cre…

对Transformer的一些理解

在学习Transformer这个模型前对seq2seq架构有个了解时很有必要的 先上图 输入和输出 首先理解模型时第一眼应该理解输入和输出最开始我就非常纠结 有一个Inputs&#xff0c;一个Outputs(shift right)和一个Output Probabilities&#xff0c;首先需要借助这三个输入/输出来初步…

UI自动化三之APP自动化

day06 能独立搭建app测试相关环境能通过命令在电脑端操作android系统中的应用&#xff08;adb命令&#xff09; day07 掌握appium基础操作api的使用&#xff08;安装、卸载、…&#xff09; 掌握appium高级api操作(拖拽、滑动、…) 掌握appium手机操作api&#xff08;按键…&am…

煤矿可视化:提升安全与效率

采用图扑先进的可视化技术&#xff0c;实时监控煤矿环境、设备运行和生产等数据。全方位展示与分析&#xff0c;有效提升安全管理水平和生产效率&#xff0c;助力煤矿智能化和高效运作。

基于正点原子FreeRTOS学习笔记——时间片调度实验

目录 一、时间片调度介绍 二、实验演示 1、宏修改 1.1、滴答定时器宏 1.2、调度器宏 2、实验程序 2.1.1、任务1&#xff0c;任务2不加临界区程序 2.1.2 实验现象 2.2.1、任务1&#xff0c;任务2加临界区程序 2.2.2 实验现象 一、时间片调度介绍 时间片&#xff1a;同…