Leetcode 376 摆动序列

题意理解

        如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 

        如果是摆动序列,前后差值呈正负交替出现

        为保证摆动序列尽可能的长,我们可以尽可能的保留峰值,,删除上下坡的中间值,或平坡值。

解题思路

        已知要删除一些值来保证摆动序列的话,应该保留峰值,删除上下坡、平坡的值。

        并且摆动序列两数差值正负交替出现。

        所以我们需要一个值preDiff来记录前一个数和当前数的差值。

        还需要一个指向当前值,和后一个值得指针,来计算两数差值,看两者是否正负交替出现。

1.贪心解题

       为实现该算法解题,我们需要定义cur和after得指针,来记录当前差值

        需要定义preDiff来记录前一个差值,判断当前值是否是峰值,保留峰值,删除坡值。

        这里的删除并不是真正的删除,指示不记录此处的result++

        result来记录正负值变化次数n,指示序列应为n+1

 public int wiggleMaxLength(int[] nums) {int result=0;int preDiff=0;for(int i=0;i<nums.length-1;i++){if((preDiff>=0&&nums[i+1]-nums[i]<0)||(preDiff<=0&&nums[i+1]-nums[i]>0)){result++;//只记录有正负性的preDiffpreDiff=nums[i+1]-nums[i];}}//result记录了中间值正负变化的次数n,指示n+1个数的序列,有n个中间值return result+1;}

2.分析

时间复杂度:O(n)

空间复杂度:O(n)

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

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

相关文章

Mongodb复制集架构

目录 复制集架构 复制集优点 复制集模式 复制集搭建 复制集常用命令 复制集增删节点 复制集选举 复制集同步 oplog分析 什么是oplog 查看oplog oplog大小 复制集架构 复制集优点 数据复制: 数据在Primary节点上进行写入&#xff0c;然后异步地复制到Secondary节点&a…

14 v-model绑定输入框

概述 v-model用于实现双向数据绑定&#xff0c;使用v-model绑定输入框是Vue3中最常见的用法之一。 比如&#xff0c;在制作登录界面的时候&#xff0c;我们会使用v-model绑定用户名和密码&#xff0c;这里的用户名和密码都是输入框。 基本用法 我们创建src/components/Demo…

cleanmymacX安全吗?有用吗

苹果电脑以其流畅的操作系统和卓越的性能而备受用户喜爱。然而&#xff0c;随着时间的推移&#xff0c;系统可能会积累大量垃圾文件&#xff0c;影响性能。本文将介绍苹果电脑怎么清理垃圾文件的各种方法&#xff0c;以提升系统运行效率。 CleanMyMac X是一款专业的Mac清理软件…

Android Studio问题解决:Gradle Download 下载超时 Connect reset

文章目录 一、遇到问题二、解决办法 一、遇到问题 Gradle Download下载超时Sync了很多次&#xff0c;一直失败 二、解决办法 手动通过gradle网站下载 https://gradle.org/releases/可能也会出现超时&#xff0c;最好开个VPN软件会比较快。 下载好的软件&#xff0c;放到本机的…

工业缺陷检测新时代!OpenCV4六种方法助你轻松应对生产难题!

OpenCV4工业缺陷检测的六种方法 机器视觉缺陷检测好书推荐工业上常见缺陷检测方法方法一&#xff1a;方法二&#xff1a;方法三&#xff1a;方法四&#xff1a;方法五&#xff1a;方法六&#xff1a; 写在末尾&#xff1a; 主页传送门&#xff1a;&#x1f4c0; 传送 送书系列…

hive企业级调优策略之分组聚合优化

测试用表准备 hive企业级调优策略测试数据 (阿里网盘下载链接)&#xff1a;https://www.alipan.com/s/xsqK6971Mrs 订单表(2000w条数据) 表结构 建表语句 drop table if exists order_detail; create table order_detail(id string comment 订单id,user_id …

clangd:Couldn‘t build compiler instance

在使用vscode clangd 搭建RK3588 5.10版本linux内核代码开发环境时&#xff0c;使用bear生成 compile_commands.json时&#xff0c;clangd生成标签失败代码无法跳转&#xff0c;查看clangd日志&#xff0c;发现标签生成失败&#xff0c;失败原因&#xff1a;Couldnt build comp…

C++ OJ题测试—排序算法效率

目录 OJ链接 一、直接插入排序 二、希尔排序 三、直接选择排序 常规&#xff1a; 第二种&#xff1a; 四、 堆排序 五、冒泡排序 六、快速排序 常规&#xff1a; 三路划分优化效率 七、归并排序 八、计数排序 OJ链接 ​ 一、直接插入排序 class Solution { pub…

CentOS 7 部署 Nacos-2.3.0 (单机版)

CentOS 7 部署 Nacos-2.3.0 &#xff08;单机版&#xff09; 1. 下载 Nacos 安装包 历史版本&#xff1a;https://github.com/alibaba/nacos/releases/ 我选的是 2.3.0 版本&#xff0c;https://github.com/alibaba/nacos/releases/download/2.3.0/nacos-server-2.3.0.tar.g…

等保二级和三级的区别

等保二级和三级定级标准有什么区别&#xff1f;定级原则和方法介绍 网络安全等级保护&#xff0c;简称等保&#xff0c;是我国为了保障信息系统的安全运行&#xff0c;防止信息泄露、篡改、破坏等威胁&#xff0c;制定的一套信息安全管理制度。根据《信息安全技术网络安全等级保…

MIT18.06线性代数 笔记1

文章目录 方程组的几何解释矩阵消元乘法和逆矩阵A的LU分解转置-置换-向量空间R列空间和零空间求解Ax0主变量 特解求解Axb可解性和解的结构线性相关性、基、维数四个基本子空间矩阵空间、秩1矩阵和小世界图图和网络复习一 方程组的几何解释 线性组合&#xff1a; 找到合适的x和…

【小沐学Python】Python实现语音识别(vosk)

文章目录 1、简介1.1 vosk简介1.2 vosk模型1.3 vosk服务 2、安装3、测试3.1 命令行测试3.2 代码测试 结语 1、简介 https://alphacephei.com/vosk/index.zh.html Vosk 是一个语音识别工具包。 1.1 vosk简介 支持二十种语言 - 中文&#xff0c;英语&#xff0c;印度英语&#…

ansible模块 (7-13)

模块 7、hostname模块&#xff1a; 远程主机名管理模块 ansible 192.168.10.202 -m hostname -a nameliu 8、copy模块&#xff1a; 用于复制指定的主机文件到远程主机的模块 常用参数&#xff1a; dest: 指出要复制的文件在哪&#xff0c;必须使用绝对路径。如果源目标是…

Ubuntu18.04.6下samba服务的安装及配置

目录 01 安装samba服务&#xff1a; 03 重启samba服务 04 设置samba登录密码 05 测试 前言 从本章开始我们将要学习嵌入式音视频的学习了 &#xff0c;使用的瑞芯微的开发板 &#x1f3ac; 个人主页&#xff1a;ChenPi &#x1f43b;推荐专栏1: 《C_ChenPi的博客-CSDN博…

JavaWeb笔记之JavaWeb JDBC

//Author 流云 //Version 1.0 一. 引言 1.1 如何操作数据库 使用客户端工具访问数据库&#xff0c;需要手工建立连接&#xff0c;输入用户名和密码登录&#xff0c;编写 SQL 语句&#xff0c;点击执行&#xff0c;查看操作结果&#xff08;结果集或受影响行数&#xff09;。…

HarmonyOS应用开发-手写板(二)

在前一篇手写板的文章中&#xff08;HarmonyOS应用开发-手写板-CSDN博客&#xff09;&#xff0c;我们通过使用Path实现了一个基本的手写板&#xff0c;但遗憾的是&#xff0c;无法保存所绘制的图像。在本文中&#xff0c;我们将采用canvas和Path2D来重新构建手写板应用。依然只…

java中基本类型之间的转换

基本类型容量 java中的 8 种基本数据类型&#xff0c;以及它们的占内存的容量大小和表示的范围 byte&#xff1a;字节型&#xff0c;占内存容量为 1 个字节&#xff08;8 位&#xff09;&#xff0c;表示范围为 -128&#xff08;-2^7&#xff09;到 127&#xff08;2^7-1&…

关于MQ,你了解多少?(干货分享之一)

导语 本文梳理笔者 MQ 知识&#xff0c;从消息中间件的基础知识讲起&#xff0c;在有了基础知识后&#xff0c;对市面上各主流的消息中间件进行详细的解析&#xff0c;包括 RabbitMQ、RocketMQ、Kafka、Pulsar&#xff0c;最后再横向对比这几款主流的消息中间件。 消息中间件…

Linux下搭建Redis一主二从的哨兵模式

一、Redis哨兵模式搭建 1、准备好三台机器&#xff0c;使用diap用户完成搭建 2、安装Redis -在资源库中下载redis-7.0.8.tar.gz&#xff0c;分别上传到三台服务器中软件安装的目录&#xff0c;我这里安装到/u01下 -安装依赖。yum -y install gcc-c&#xff08;root用户执行…

vue onlyoffice在线编辑与预览,文件无法保存问题,始终打开同一文件的问题

主要写一下前端vue的使用&#xff0c;需要后端或运维去弄docker服务&#xff0c;然后给前端一个api地址 在vue的Index.html页面添加这个 <script type"text/javascript" src"http://docker服务器ip:docker服务器端口/web-apps/apps/api/documents/api.js&q…