7月26日贪心练习-摆动序列专题

前言

大家好,今天学习用贪心思想解决摆动序列问题,共三题,分享自己的思路,请大家多多支持

算法思想

大家可以先看看这道我们后面会讲的题看看怎么个事,. - 力扣(LeetCode)

由此题题解说明算法原理,我们可以吧摆动序列的数据放在折线图里,它的大致走向如下

每根线上都可以看作有一个或多个点,这个时候可以想到最大摆动长度就是折线弯折次数(水平的线不计入)自然会想到统计折线的极大值和极小值个数来确定直线,不过对于本题,时候在直线走完后,还会出现两种情况一是直线出来往上走,这个时候正常统计极大和极小值数

红线代表实际的摆动,还有就是往下走,这个时候折线数还是4次

可以知道两种情况都是可以忽略平线的

这类题的贪心就体现在我们在找折线时,总是往后找到折线向上(或向下)能到达的最大高度,这体现了贪心的思想,下面我们具体题目具体分析

1.摆动序列

ok,那么接着上面的题继续往下讲代码实现,我们可以用两个变量实现这题,我们需要一个变量总是记录数组中每一个数据与上一个数据的差值,另一个记录上一个波峰或波谷出现的位置差值,对于平线的情况,可以看出它差值是0,不会让折线数增加,跳过即可,线最后返回值加上结尾的折数

代码

class Solution {public int wiggleMaxLength(int[] nums) {int  ret=0;int left=0;for(int i=0;i<nums.length-1;i++){int right=nums[i+1]-nums[i];if(right==0){continue;}if(right*left<=0){ret++;left=right;}}return ret+1;}
}

2.最长连续递增序列

. - 力扣(LeetCode)

“连续”把这道题难度降低了许多,结合摆动序列思想,暴力+一点贪心就可以很快解决这题

class Solution {public int findLengthOfLCIS(int[] nums) {  int slow=0;int fast=0; int count=0;while(fast<nums.length){int p=fast+1;while(p<nums.length&&nums[p]>nums[p-1]){p++;}count=Math.max(count,fast-slow);slow=fast;}return count;}
}

贪心就体现在我们每次更新slow时不用++而是直接更新到fast停止递增的位置

3.递增的三元子序列

. - 力扣(LeetCode)

思路是类似的,因为是三元所以给了两个a,b,来统计递增个数是否有三个

class Solution {public boolean increasingTriplet(int[] nums) {int a=nums[0];int b=Integer.MAX_VALUE;for(int i=0;i<nums.length;i++){if(nums[i]>b){return true;}else if(nums[i]>a){b=nums[i];   }else{a=nums[i];   }}return false;}
}

好啦,本期博客就到这里,谢谢大家

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

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

相关文章

若依ruoyi+AI项目二次开发

//------------------------- //定义口味名称和口味列表静态数据 const dishFlavorListSelectref([ {name:"辣度",value:["不辣","微辣","中辣","重辣"]}, {name:"忌口",value:["不要葱","不要…

JVM之对象的创建过程

目录 对象的创建&#xff1a; 对象内存分配的两种方式&#xff1a; 指针碰撞&#xff1a; 空闲列表&#xff1a; 对象的内存布局&#xff08;基本结构&#xff09;&#xff1a; 对象的访问定位&#xff1a; 主流的访问方式主要有使用句柄和直接指针两种。 对象的创建&…

基于微信小程序+SpringBoot+Vue的流浪动物救助(带1w+文档)

基于微信小程序SpringBootVue的流浪动物救助(带1w文档) 基于微信小程序SpringBootVue的流浪动物救助(带1w文档) 本系统实现的目标是使爱心人士都可以加入到流浪动物的救助工作中来。考虑到救助流浪动物的爱心人士文化水平不齐&#xff0c;所以本系统在设计时采用操作简单、界面…

FPGA实现LCD1602控制

目录 注意&#xff01; 本工程采用野火征途PRO开发板&#xff0c;外接LCD1602部件进行测试。 有偿提供代码&#xff01;&#xff01;&#xff01;可以定制功能&#xff01;&#xff01;&#xff01; 联系方式见底部 一、基础知识 1.1 引脚信息 1.2 指令 1.2.1 清屏 1.…

ubuntu实践

目录 扩容 本机上ping不通新建立的虚拟机 ssh连接 装sshd ssh客户端版本较低&#xff0c;会报key exchange算法不匹配问题 ubuntun上装docker 将centos7下的安装包改造成适配 ubuntu的包 参考文章 扩容 Hyper-V 管理器安装的ubutun扩容磁盘空间说明_hype-v磁盘扩容-…

人工智能算法工程师(中级)课程20-模型注意力机制之注意力机制的原理、计算方式与代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(中级)课程20-模型注意力机制之注意力机制的原理、计算方式与代码详解。本文深入探讨了注意力机制在深度学习中的应用与原理&#xff0c;尤其聚焦于序列到序列模型的上下文中。通过直观的解释和详…

48 mysql 全局变量修改了时区, 客户端拿到的依然是旧时区

前言 这是一个 我们最近碰到的问题 在我们的一个 服务平台 查询到的时间字段 比 当前时区的当前时间多 8 小时 然后 这个问题 也是挺神奇的, navicate 上面查询到的 时间是在正常的时间 然后 查询环境变量 tz_zone 是 “08:00”, 也没有问题, 但是 客户端这边 拿到的是 当…

【HTML+CSS】HTML超链接:构建网页导航的基石

目录 什么是HTML超链接&#xff1f; 基本语法 示例 链接到另一个网页 链接到同一页面内的不同部分 常用属性 在Web开发的广阔世界中&#xff0c;HTML&#xff08;HyperText Markup Language&#xff09;作为网页内容的标准标记语言&#xff0c;扮演着至关重要的角色。而在…

nodejs安装及环境配置轨道交通运维检测系统App-OA人事办公排班故障维修

✌网站介绍&#xff1a;✌10年项目辅导经验、专注于计算机技术领域学生项目实战辅导。 ✌服务范围&#xff1a;Java(SpringBoo/SSM)、Python、PHP、Nodejs、爬虫、数据可视化、小程序、安卓app、大数据等设计与开发。 ✌服务内容&#xff1a;免费功能设计、免费提供开题答辩P…

【SpringCloud】企业认证、分布式事务,分布式锁方案落地-2

目录 高并发缓存三问 - 穿透 缓存穿透 概念 现象举例 解决方案 缓存穿透 - 预热架构 缓存穿透 - 布隆过滤器 布隆过滤器 布隆过滤器基本思想​编辑 了解 高并发缓存三问 - 击穿 缓存击穿 高并发缓存三问 - 雪崩 缓存雪崩 解决方案 总结 为什么要使用数据字典&…

对Linux目录结构的补充

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 ☁️运维工程师的职责&#xff1a;监…

白鲸开源CEO郭炜荣获「2024中国数智化转型升级先锋人物」称号

2024年7月24日&#xff0c;由数据猿主办&#xff0c;IDC协办&#xff0c;新华社中国经济信息社、上海大数据联盟、上海市数商协会、上海超级计算中心作为支持单位&#xff0c;举办“数智新质力拓未来 2024企业数智化转型升级发展论坛——暨AI大模型趋势论坛”数据猿“年中特别策…

数据结构_study(一)

术语 程序设计数据结构算法 数据结构&#xff1a;相互之间存在一种或多种特定关系的数据元素的集合 数据&#xff1a;输入到计算机中可以操作的对象&#xff0c;数值类型&#xff08;整型&#xff0c;浮点型&#xff09;&#xff0c;非数值类型&#xff08;字符&#xff0c;…

算法——二分查找(day10)

目录 69. x 的平方根 题目解析&#xff1a; 算法解析&#xff1a; 代码&#xff1a; 35. 搜索插入位置 题目解析&#xff1a; 算法解析&#xff1a; 代码&#xff1a; 69. x 的平方根 69. x 的平方根 - 力扣&#xff08;LeetCode&#xff09; 题目解析&#xff1a; 老…

Linux 安装mysql-client-core-8.0

在Linux上安装mysql-client-core-8.0 安装流程 下面是安装mysql-client-core-8.0的步骤和相应的命令&#xff1a; 步骤1&#xff1a;更新系统软件源 我们首先需要更新系统的软件源&#xff0c;以确保我们能够获取到最新的软件包列表。使用以下命令更新软件源&#xff1a; …

C语言——运算符及表达式

C语言——运算符及表达式 运算符运算符的分类&#xff08;自增运算符&#xff09;、--&#xff08;自减运算符&#xff09;赋值运算符逗号运算符&#xff08;顺序求值运算符&#xff09; 表达式 运算符 运算符的分类 C语言的运算符范围很宽&#xff0c;除了控制语句和输入输出…

go语音进阶 Goroutine

什么是 Goroutine&#xff1f; 在Go语言中 是通过 ‘协程’ 来实现并发&#xff0c; Goroutine 是 Go 语言特有的名词&#xff0c; 区别于进程 Process&#xff0c; 线程Thread&#xff0c; 协程 Coroutine, 因为 Go语言的作者们觉得是有所区别的&#xff0c;所有专门创造做 Go…

python-绝对值排序(赛氪OJ)

[题目描述] 输入 n 个整数&#xff0c;按照绝对值从大到小排序后输出。保证所有整数的绝对值不同。输入格式&#xff1a; 输入数据有多组&#xff0c;每组占一行&#xff0c;每行的第一个数字为 n ,接着是 n 个整数&#xff0c; n0 表示输入数据的结束&#xff0c;不做处理。输…

Ruoyi-WMS本地运行

所需软件 1、JDK&#xff1a;8 安装包&#xff1a;https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.htmlopen in new window 安装文档&#xff1a;https://cloud.tencent.com/developer/article/1698454open in new window 2、Redis 3.0 安装包&a…

[Vulnhub] Acid-Reloaded SQLI+图片数据隐写提取+Pkexec权限提升+Overlayfs权限提升

信息收集 IP AddressOpening Ports192.168.101.158TCP:22,33447 $ nmap -p- 192.168.101.158 --min-rate 1000 -sC -sV Not shown: 65534 closed tcp ports (conn-refused) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.7p1 Ubuntu 5ubuntu1.3 (Ubuntu Lin…