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

LeetCode:376.摆动序列

个人主页:仍有未知等待探索-CSDN博客

专题分栏:算法_仍有未知等待探索的博客-CSDN博客

题目链接:376. 摆动序列 - 力扣(LeetCode)

一、题目

如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。

  • 例如, [1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3) 是正负交替出现的。

  • 相反,[1, 4, 7, 2, 5] 和 [1, 7, 4, 5, 5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。

子序列 可以通过从原始序列中删除一些(也可以不删除)元素来获得,剩下的元素保持其原始顺序。

给你一个整数数组 nums ,返回 nums 中作为 摆动序列 的 最长子序列的长度 。

示例 1:

输入:nums = [1,7,4,9,2,5]
输出:6
解释:整个序列均为摆动序列,各元素之间的差值为 (6, -3, 5, -7, 3) 。

示例 2:

输入:nums = [1,17,5,10,13,15,10,5,16,8]
输出:7
解释:这个序列包含几个长度为 7 摆动序列。
其中一个是 [1, 17, 10, 13, 10, 16, 8] ,各元素之间的差值为 (16, -7, 3, -3, 6, -8) 。

示例 3:

输入:nums = [1,2,3,4,5,6,7,8,9]
输出:2

提示:

  • 1 <= nums.length <= 1000
  • 0 <= nums[i] <= 1000

二、理解

我们要求摆动序列的最大子序列(可以进行删除操作,创造子序列)

我们只需要记录每段是上升的还是下降的,然后如果连续的两个序列不同的话,就进行记录。

(还有一种用峰值来判断的方法比较繁琐)

三、代码

class Solution {
public:int wiggleMaxLength(vector<int>& nums) {int ans = 0;// 用来记录答案int f = 0;// 标记位, 用来标记上一个状态,是升序还是降序// 从第二个数开始进行,因为第一个数总是会加到答案里面去for (int i = 1; i < nums.size(); i ++ ){// 该序列是升序,但是上一个序列不能为升序if (nums[i - 1] < nums[i] && f != 1){ans ++;f = 1;// 升序}else if (nums[i - 1] > nums[i] && f != 2){ans ++;f = 2;// 降序}}// 把第一个数进行包含return ans + 1;}
};

谢谢大家!

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

相关文章:

  • Stable Diffusion插件Recolor实现黑白照片上色
  • Android 音频焦点管理
  • 大模型+自动驾驶
  • openssl3.2 - 测试程序的学习 - test\aesgcmtest.c
  • C语言——操作符详解2
  • (免费领源码)java#Springboot#mysql旅游景点订票系统68524-计算机毕业设计项目选题推荐
  • 帝国cms7.5 支付升级优化版文库范文自动生成word/PDF文档付费复制下载带支付系统会员中心整站模板源码sitemap百度推送+安装教程
  • 【node】关于npm、yarn、npx的区别与使用
  • 力扣0099——恢复二叉搜索树
  • 机器学习核心算法
  • libjsoncpp 的编译和交叉编译
  • 【Unity美术】如何用3DsMax做一个水桶模型
  • 如何用一根网线和51单片机做简单门禁[带破解器]
  • 在 VUE 项目中,使用 Axios 请求数据时,提示跨域,该怎么解决?
  • 1.【Vue3】前端开发引入、Vue 简介
  • 一起学习ETCD系列——运维操作之etcdctl使用
  • Spring Security 存储密码之 JDBC
  • 第3章-python深度学习——(波斯美女)
  • 蓝桥杯备战——4.继电器/蜂鸣器
  • Redis高级特性之地理空间索引
  • R语言【taxlist】——as():将 taxlist 对象强制转换为 list 对象
  • 使用POI生成word文档的table表格
  • C# 继承、多态性、抽象和接口详解:从入门到精通
  • python在线聊天室(带聊天保存)
  • jenkins+gitlab实现Android自动打包填坑之旅
  • 洛谷B3625迷宫寻路
  • GPT-SoVITS 测试
  • 人工智能:更多有用的 Python 库
  • Linux BIO如何下发到HDD?
  • 《动手学深度学习(PyTorch版)》笔记4.6