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

贪心 Leetcode 376 摆动序列

摆动序列

Leetcode 376

学习记录自代码随想录

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

例如, [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.计算 prediff(nums[i] - nums[i-1]) 和 curdiff(nums[i+1] - nums[i]),如果prediff < 0 && curdiff > 0 或者 prediff > 0 && curdiff < 0 此时就有波动就需要统计;
2.统计波动即峰值点数,则所求序列总长度为峰值点数加1,所以序列长度默认值设为1;
3.nums.size() == 2不等的情况其实已经在下面涉及到了,在数组长度为2时在之前加一个点和nums[0]相同即可并入下面的情况;
3.(1)nums.size() >= 3,(preDiff <= 0 && curDiff > 0) || (preDiff >= 0 && curDiff < 0)在这里插入图片描述
(2)在数组长度为2时在之前加一个点和nums[0]相同即可并入之前的情况,用该条件(preDiff <= 0 && curDiff > 0) || (preDiff >= 0 && curDiff < 0)判断在这里插入图片描述(3)如果把prediff = curdiff放在for大循环中则每次都更新,会将下面这种情况错记录进去,所以应该在峰值点出现时再更新prediff = curdiff;
在这里插入图片描述

class Solution {
public:int wiggleMaxLength(vector<int>& nums) {if(nums.size() <= 1) return nums.size();// if(nums.size() == 2 && nums[0] == nums[1]){//     return 1;// }else if(nums.size() == 2 && nums[0] != nums[1]){//     return nums.size();// }  // nums.size() == 2不等的情况其实已经在下面涉及到了,在数组长度为2时在之前加一个点和nums[0]相同即可并入下面的情况int max_len = 1;  // 默认为1,因为统计的是峰值点所以总长度为峰值点数加1int prediff = 0;int curdiff = 0;for(int i = 0; i < nums.size()-1; i++){curdiff = nums[i+1] - nums[i];if((prediff <= 0 && curdiff > 0) || (prediff >= 0 && curdiff < 0)){max_len++;  // 峰值点的累加prediff = curdiff;  // 峰值点出现后再更新}}return max_len; }
};

相关文章:

贪心 Leetcode 376 摆动序列

摆动序列 Leetcode 376 学习记录自代码随想录 如果连续数字之间的差严格地在正数和负数之间交替&#xff0c;则数字序列称为 摆动序列 。第一个差&#xff08;如果存在的话&#xff09;可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。 例如&#…...

蓝桥杯(3.1)

92. 递归实现指数型枚举 import java.util.Scanner;public class Main {static int N 16;static int n;static int[] st new int[N]; public static void dfs(int u) {if(u > n) {for(int i1;i<n;i) {if(st[i] 1)System.out.print(i" ");}System.out.print…...

像用Excel一样用Python:pandasGUI

文章目录 启动数据导入绘图 启动 众所周知&#xff0c;pandas是Python中著名的数据挖掘模块&#xff0c;以处理表格数据著称&#xff0c;并且具备一定的可视化能力。而pandasGUI则为pandas打造了一个友好的交互窗口&#xff0c;有了这个&#xff0c;就可以像使用Excel一样使用…...

C#面:Application , Cookie 和 Session 会话有什么不同

Application、Cookie 和 Session 是在Web开发中常用的三种会话管理方式 Application&#xff08;应用程序&#xff09;&#xff1a; Application 是在服务器端保存数据的一种方式&#xff0c;它可以在整个应用程序的生命周期内共享数据。Application 对象是在应用程序启动时创…...

BUUCTF---数据包中的线索1

1.题目描述 2.下载附件&#xff0c;是一个.pcap文件 3.放在wireshark中&#xff0c;仔细观察数据流&#xff0c;会发现有个叫fenxi.php的数据流 4.这条数据流是http,且使用GET方式&#xff0c;接下来我们使用http.request,methodGET 命令来过滤数据流 5.在分析栏中我们追踪htt…...

【数仓】kafka软件安装及集群配置

相关文章 【数仓】基本概念、知识普及、核心技术【数仓】数据分层概念以及相关逻辑【数仓】Hadoop软件安装及使用&#xff08;集群配置&#xff09;【数仓】Hadoop集群配置常用参数说明【数仓】zookeeper软件安装及集群配置 一、环境准备 准备3台虚拟机 Hadoop131&#xff…...

代码随想录 二叉树第三周

目录 404.左叶子之和 513.找树左下角的值 112.路径总和 106.从中序与后序遍历构造二叉树 105.从前序与中序遍历序列构造二叉树 654.最大二叉树 404.左叶子之和 404. 左叶子之和 简单 给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 示例 1&#xff1a; 输…...

flask流式输出-SSE服务

一、定义 flask demo前端遇到的问题 二、实现 flask demo from gevent import monkey monkey.patch_all() #并行 import time from flask import Response, stream_with_context from flask import Flask from gevent.pywsgi import WSGIServer from flask import …...

注解整理ing

注解 1. 实体类注解 Data注解是lombok.jar包下的注解&#xff0c;该注解通常用在实体bean上&#xff0c;不需要写出set和get方法 Data相当于Getter Setter RequiredArgsConstructor ToString EqualsAndHashCode这5个注解的合集 EqualsAndHashCode注解会生成equals(Object oth…...

Android 将图片网址url转化为bitmap

1. 图片网址url转化为bitmap 1.1. 方法一 通过 HttpURLConnection 请求 要使用一个线程去访问&#xff0c;因为是网络请求&#xff0c;这是一个一步请求&#xff0c;不能直接返回获取&#xff0c;要不然永远为null&#xff0c;在这里得到BitMap之后记得使用Hanlder或者EventBu…...

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:颜色渐变)

设置组件的颜色渐变效果。 说明&#xff1a; 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 linearGradient linearGradient(value: { angle?: number | string; direction?: GradientDirection; colors: Array; repea…...

腾讯云幻兽帕鲁游戏存档迁移教程,本地单人房迁移/四人世界怎么迁移存档?

腾讯云幻兽帕鲁游戏存档迁移的方法主要包括以下几个步骤&#xff1a; 登录轻量云控制台&#xff1a;首先&#xff0c;需要登录到轻量云控制台&#xff0c;这是进行存档迁移的前提条件。在轻量云控制台中&#xff0c;可以找到接收存档的服务器卡片&#xff0c;并点击进入实例详情…...

C2_W2_Assignment_吴恩达_中英_Pytorch

Neural Networks for Handwritten Digit Recognition, Multiclass In this exercise, you will use a neural network to recognize the hand-written digits 0-9. 在本次练习中&#xff0c;您将使用神经网络来识别0-9的手写数字。 Outline 1 - Packages 2 - ReLU Activatio…...

C语言实现航班管理

航班管理系统&#xff0c;用C语言实现&#xff0c;可以作为课程设计&#xff0c;代码如下&#xff1a; #include<iostream> #include<fstream> #include<vector> #include<string> #include<stdlib.h> using namespace std; //信息基类 clas…...

【Java面试题】SpringBoot与Spring的区别

主要区别体现几个方面&#xff1a; 1.操作简便性 SpringBoot提供极其快速和简化的操作&#xff0c;使得Spring开发者能更快速上手。它通过提供spring的运行配置&#xff0c;以及为通用spring项目提供许多非功能性特性&#xff0c;进一步简化了开发过程。 2.框架扩展性 Spri…...

网络编程(IP、端口、协议、UDP、TCP)【详解】

目录 1.什么是网络编程&#xff1f; 2.基本的通信架构 3.网络通信三要素 4.UDP通信-快速入门 5.UDP通信-多发多收 6.TCP通信-快速入门 7.TCP通信-多发多收 8.TCP通信-同时接收多个客户端 9.TCP通信-综合案例 1.什么是网络编程&#xff1f; 网络编程是可以让设…...

Linux线程(二)----- 线程控制

目录 前言 一、线程资源区 1.1 线程私有资源 1.2 线程共享资源 1.3 原生线程库 二、线程控制接口 2.1 线程创建 2.1.1 创建一批线程 2.2 线程等待 2.3 终止线程 2.4 线程实战 2.5 其他接口 2.5.1 关闭线程 2.5.2 获取线程ID 2.5.3 线程分离 三、深入理解线程 …...

Linux 内核irq_stack遍历

环境Centos 4.18.0-80.el8.x86_64 一、x86架构堆栈类型说明 https://www.kernel.org/doc/Documentation/x86/kernel-stacks int get_stack_info(unsigned long *stack, struct task_struct *task,struct stack_info *info, unsigned long *visit_mask) {if (!stack)goto unk…...

GIT问题记录

一、 1.Gitee相关 复现步骤&#xff1a;自己在gitee上使用WEB解决冲突&#xff0c;本地未拉取最新的origin分支&#xff0c;然后本地也做了其他的修改&#xff0c;然后commit并且push&#xff0c;push时候报错&#xff0c;本地分支不干净 尝试拉取origin的最新内容&#xff…...

AzerothCore安装记录

尝试在FreeBSD系统下安装AzerothCore 首先安装相关软件 pkg install cmake mysql80-server boost-all装完mysql之后提示&#xff1a; MySQL80 has a default /usr/local/etc/mysql/my.cnf, remember to replace it with your own or set mysql_optfile"$YOUR_CNF_FILE i…...

【现代通信技术】SDH技术:从PDH到SDH的演进与核心优势解析

1. 从电缆时代到光纤革命&#xff1a;PDH与SDH的技术分野 记得刚入行那会儿&#xff0c;师傅带着我维护老式通信设备&#xff0c;成捆的电缆像蜘蛛网般盘踞在机房。那时候的准同步数字体系&#xff08;PDH&#xff09;就像用不同方言交流的邻居——北美用E1&#xff08;1.544Mb…...

ArcHydroTools中DEM修正的关键参数优化与效果对比分析

1. ArcHydroTools与DEM修正的核心价值 第一次接触ArcHydroTools的DEM修正功能时&#xff0c;我和大多数初学者一样充满疑惑——为什么需要对原始DEM数据进行修正&#xff1f;直到在某个流域分析项目中&#xff0c;我亲眼看到未经修正的DEM导致水流路径完全偏离实际河道&#xf…...

大模型之Linux服务器部署大模型尘

一、各自优势和对比 这是检索出来的数据&#xff0c;据说是根据第三方评测与企业数据&#xff0c;三款产品在代码生成质量上各有侧重&#xff1a; 产品 语言优势 场景亮点 核心差异 百度 Comate C核心代码质量第一&#xff1b;Python首生成率达92.3% SQL生成准确率提升35%&…...

Go-multierror 实战案例:10个常见场景的错误处理优化

Go-multierror 实战案例&#xff1a;10个常见场景的错误处理优化 【免费下载链接】go-multierror A Go (golang) package for representing a list of errors as a single error. 项目地址: https://gitcode.com/gh_mirrors/go/go-multierror 在Go语言开发中&#xff0c…...

OpenClaw 长记忆增强:基于 Hologres + Mem0 的企业级方案

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

golang如何优化反射性能_golang反射性能优化技巧

...

SolidEdge许可证分点典型成功案例深度解析

SolidEdge许可证分点典型成功案例深度解析记得上个月&#xff0c;项目组又是因为SolidEdge许可抢不到耽误了两天出图。工程师抓狂&#xff0c;IT部门也跟着着急。可巧的是&#xff0c;查账截图里显示&#xff0c;公司每年在软件授权上的投入早就超过千万&#xff0c;可也是&…...

别再用扁网线了!实测小米AX3600刷OpenWRT后断流的元凶排查与硬件避坑指南

深度解析OpenWRT网络断流&#xff1a;从硬件避坑到系统调优的全方位指南 当你兴冲冲地给路由器刷上OpenWRT&#xff0c;准备享受开源系统带来的自由与强大功能时&#xff0c;最令人抓狂的莫过于网络频繁断流。那种视频看到一半突然卡住、游戏关键时刻掉线的体验&#xff0c;足以…...

深度解析Blender3mfFormat插件:3MF格式导入导出实战指南

深度解析Blender3mfFormat插件&#xff1a;3MF格式导入导出实战指南 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat Blender3mfFormat是一款专为Blender设计的3MF文件导入…...

用LLM提高语音转文本的准确率

语音转文本转换&#xff0c;也称为自动语音识别&#xff08;ASR&#xff09;或音频转录&#xff0c;是将口语音频转换为书面文本的过程&#xff0c;生成的文本称为转录稿。虽然基于 Transformer 的模型现已广泛应用于语音转文本转换&#xff0c;但对于较小或资源匮乏的语言&…...