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

【算法】贪心算法:摆动序列C++

文章目录

  • 前言
  • 题目解析
  • 算法原理
  • 代码示例
  • 策略证明

前言

题目的链接,大家可以先试着去做一下再来看一下思路。376. 摆动序列 - 力扣(LeetCode)

题目解析

将题目有用的信息划出来,结合示例认真阅读,去理解题目。

在这里插入图片描述

我们的摆动序列可能不是唯一的,但是我们只需要返回最长子序列的长的就ok了,像题目里面给的示例2就有这种情况,紫色划线组成的数组的最长子序列是7,但是蓝色划线的数组成的最长子序列的长度也是7。
所以我们一定要认真看题目给的示例,然后去挖掘一下题目给的示例没有的情况。

在这里插入图片描述

算法原理

在这里插入图片描述

代码示例

class Solution {
public:int wiggleMaxLength(vector<int>& nums) {int n=nums.size();if(n<2) return n;//首先去处理特殊情况,就是数组中数只有一个的情况int ret = 0, left= 0;//ret用表示最长子序列的长度,left表示某点左侧邻域是递增还是递减。for(int i=0; i<n-1; i++)//我们这里不用判断最后一个数,因为最后一个点我们是一定要选的,所以返回时ret要加一。{int right=nums[i+1]-nums[i];//算出该点右侧邻域是递增还是递减。if(right==0) continue;//这里时判断右侧点的值是否与当前点的值相等。if(right*left<=0) ret++;left=right;//将right的值赋给left,当i到当前点的下一个点的时候,此时的left则是下一个点左侧邻域的递增减情况。}return ret+1;}
};

策略证明

证明方法:反证法
在这里插入图片描述

http://www.dtcms.com/a/279399.html

相关文章:

  • 2025js——面试题(8)-http
  • Linux 系统下的 Sangfor VDI 客户端安装与登录完全攻略 (CentOS、Ubuntu、麒麟全线通用)
  • 程序跑飞是什么?
  • 核电概念盘中异动,中核科技涨停引领板块热度
  • 物联网技术促进能量收集创新应用落地
  • 第一章编辑器开发基础第一节绘制编辑器元素_4输入字段(4/7)
  • 【一维 前缀和+差分】
  • 互斥锁与同步锁
  • IIS错误:Service Unavailable HTTP Error 503. The service is unavailable.
  • Unity Shader 预热与缓存优化
  • Unity中HumanBodyBones骨骼对照
  • 卡在“pycharm正在创建帮助程序目录”
  • 笔试——Day6
  • 达梦国产数据库安装
  • React Hook 详解:原理、执行顺序与 useEffect 的执行机制
  • 切比雪夫多项式
  • leetcode 1290. 二进制链表转整数 简单
  • C++类模版与友元
  • 进程、线程、协程
  • windows内核研究(进程与线程-进程结构体EPROCESS)
  • Django基础(一)———创建与启动
  • 【反转链表专题】【LeetCode206.反转链表】【LeetCode25.K个一组翻转链表】【LeetCode234.回文链表】
  • Spring Boot 自带的 JavaMail 集成
  • android Perfetto cpu分析教程及案例
  • 5G 到 6G通信技术的革新在哪里?
  • 腾讯云和火山云优劣势对比
  • 电力协议处理框架C++版(三)
  • CA-IS3082W 隔离485 收发器芯片可能存在硬件BUG
  • LTspic下载,帮助及演示电路
  • sfe_py的应力云图计算与显示step by step