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://www.mzph.cn/web/49231.shtml

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

相关文章

MySQL练手 --- 1789. 员工的直属部门

题目链接&#xff1a;1789. 员工的直属部门 这道题虽然是个简单题&#xff0c;但是"坑"倒是不少&#xff0c;所以记录一下 思路&#xff1a; 题目要干&#xff1a; 一个员工可以属于多个部门。当一个员工加入超过一个部门的时候&#xff0c;他需要决定哪个部门是…

木材货场现状与新时代商贸物流关系分析

在全球经济一体化的浪潮下&#xff0c;商贸物流行业正经历着前所未有的变革。木材&#xff0c;作为传统而重要的原材料&#xff0c;在建筑、家具、包装等多个领域发挥着关键作用。然而&#xff0c;传统木材货场在面对新时代商贸物流的新要求时&#xff0c;其现状显得尤为滞后&a…

力扣刷题-图论-岛屿类问题-集合实现(c++实现)

我的老师&#xff1a;力扣链接这道题题解中最高赞的回答nettee&#xff0c;从这篇题解中我学到了dfs框架以及解决思路&#xff0c;并独立完成了该题解里的几道习题本人刷题的习惯是学会一个板子&#xff0c;然后之后的同类题都机械的用这个板子去做&#xff0c;最好不做创新&am…

Mybatis(三) 查询不同数据封装的方式

实体类&#xff1a; 数据库&#xff1a; 1、查询一个实体类对象 /** * 根据用户id查询用户信息* param id * return */User getUserById(Param("id") int id);<select id"getUserById" resultType"User">select * from t_user where id …

创维汽车滁州永通体验中心开业仪式暨超充车型区域上市会圆满成功

2024年7月20日&#xff0c;创维汽车滁州永通体验中心盛大开业&#xff0c;当日&#xff0c;创维汽车市场部经理周世鹏、安徽大区总监王大明等领导参加本次开业盛典&#xff0c;共同见证创维汽车滁州永通体验中心成功落地。 2021年&#xff0c;新能源乘用车高速发展&#xff0c;…

MATLAB基础:数组及其数学运算

今天我们继续学习MATLAB中的数组 我们在学习MATLAB时了解到&#xff0c;MATLAB作者秉持着“万物皆可矩阵”的思想企图将数学甚至世间万物使用矩阵表示出来&#xff0c;而矩阵的处理&#xff0c;自然成了这门语言的重中之重。 数组基础 在MATLAB中&#xff0c;数组是一个基本…

Beam Search 原理详解

文章目录 1. 前言2. 原理3. 举例4. 参考 1. 前言 Beam Search 是一种启发式图搜索算法&#xff0c;用于在图或树的搜索过程中寻找最有可能的路径。它常用于自然语言处理&#xff08;NLP&#xff09;中的序列生成任务&#xff0c;如机器翻译、语音识别和文本生成等。与穷举搜索…

网络三剑客之awk

目录 一、awk理论简述 1.1 awk概述 1.2 工作原理 1.3 工作流程 1.3.1 运行模式 1.3.2 执行流程 1.3.3 awk程序结构 1.4 基本语法 1.4.1 命令格式 二、awk操作显示 2.1 基础显示 注&#xff1a;扩展生产案例&#xff08;网卡ip、流量&#xff09; 2.2 BEGIN END 运…

AI大模型写的高考作文,你觉得怎么样?

下方为2024年高考新课标I卷语文作文题目&#xff0c;接下来将使用Chatgpt、文心一言、讯飞星火等众多AI大模型来写这篇高考作文 Chatgpt 标题&#xff1a;问题的演变与思考 随着互联网和人工智能技术的飞速发展&#xff0c;我们获得信息的方式和速度发生了前所未有的变化。曾经…

Spring-Aop源码解析(二)

书接上文&#xff0c;上文说到&#xff0c;specificInterceptors 不为空则执行createProxy方法创建代理对象&#xff0c;即下图的createProxy方法开始执行&#xff0c;生成代理对象&#xff0c;生成代理对象有两种方式&#xff0c;JDK和CGLIB。 createAopProxy就是决定使用哪…

减轻幻觉新SOTA,7B模型自迭代训练效果超越GPT-4,上海AI lab发布

LLMs在回答各种复杂问题时&#xff0c;有时会“胡言乱语”&#xff0c;产生所谓的幻觉。解决这一问题的初始步骤就是创建高质量幻觉数据集训练模型以帮助检测、缓解幻觉。 但现有的幻觉标注数据集&#xff0c;因为领域窄、数量少&#xff0c;加上制作成本高、标注人员水平不一…

介绍一下TCP/IP 模型和 OSI 模型的区别

OSI 模型是由国际标准化组织制定的一个用于计算机或通信系统间互联的标准体系&#xff0c;一共有七层&#xff0c;由上而下分别为应用层&#xff0c;表示层&#xff0c;会话层&#xff0c;传输层&#xff0c;网络层&#xff0c;数据链路层和物理层&#xff0c;虽然 OSI 模型理论…

微信公众平台无限回调系统 /user/ajax.php SQL注入漏洞复现

0x01 产品简介 微信公众平台无限回调系统是一种旨在提升企业客户服务体验和运营效率的工具。该系统通过一系列智能化和自动化的功能,帮助企业与用户之间建立更加便捷、高效的沟通桥梁。 0x02 漏洞概述 微信公众平台无限回调系统 /user/ajax.php 接口存在SQL注入漏洞,未经身…

k8s多集群管理工具kubecm

文章目录 一、概述二、安装1、官网链接2、各平台安装2.1、MacOS2.2、Linux2.3、Windows 三、实例1、验证2、配置kubecm自动补全&#xff08;选做&#xff09;2.1、Bash2.2、Zsh2.3、fish2.4、PowerShell 3、创建存放kubeconfig文件的目录4、添加到 $HOME/.kube/config4.1、kube…

win10系统通过docker部署pytorch的cpu环境_中文地址命名实体识别案例

命名实体有关文章参考这篇文章 中文地址命名实体识别训练和预测 其它docker部署类似文章参考 分布式爬虫管理平台gerapy通过docker部署scrapyd来添加主机(四) 背景 通过win10系统通过docker来部署,可以方便的在其它没有python环境的电脑上部署python项目,下面所有操作基…

【网络安全】通过导入功能将权限提升至管理员

未经许可&#xff0c;不得转载。 文章目录 正文 正文 一款学习型 Web 应用&#xff0c;具有多个角色&#xff0c;其中两个相关角色是admin和student。 管理员拥有完全访问权限&#xff0c;而学生拥有有限的访问权限。管理面板中的一项功能允许管理员通过 CSV 方便地导入用户&…

EXCEL自动公式计算始终为0

如果你的数据单元格的左上角存在绿色的三角小箭头&#xff0c;那么就会造成这种问题&#xff1a; 你的数字是以文本形式存入的单元格 解决办法&#xff1a; 选中数据列&#xff0c;数据->分列 直接选择完成 此时就可以进行公式计算了

嵌入式人工智能(26-基于树莓派4B的声音传感器)

发声体产生的振动在空气或其他物质中的传播叫作声波。声波可以借助各种介质向四面八方传播,根据频率的不同&#xff0c;可分为普通的声波(人耳能听到的&#xff0c;频率为20~20000Hz)和超声波(人耳不能听到,频率大于20000Hz)。声波传感器可以检测环境中的声波信号&#xff0c;根…

Linux进程——环境变量之二

文章目录 环境变量查看环境变量获取环境变量main()的第三个参数本地变量全局环境变量内建命令与常规命令 环境变量 查看环境变量 在上一篇文章中我们只说了查看某个环境变量的值&#xff0c;那么如何查看所有的环境变量呢 使用指令env即可 例如 这里我们也不需要全部记住&a…

WPF MVVM框架:CommunityToolkit.Mvvm包使用介绍

最近在需要使用MVVM框架的时候才发现MvvmLight作者宣布停止更新了&#xff0c;有点可惜。 原作者推荐使用CommunityToolkit.Mvvm包&#xff0c;所以这里做一个CommunityToolkit.Mvvm包使用的全面的总结。 开发环境&#xff1a; Visual Studio 2019Windows 10 1903CommunityTo…