java数据结构与算法刷题-----LeetCode594. 最长和谐子序列

基于Ardupilot/PX4固件,APM/PIXhawk硬件的VTOL垂直起降固定翼软硬件参数调试(第一篇)安装调试 基于Ardupilot/PX4固件,APM/PIXhawk硬件的VTOL垂直起降固定翼调试 本文内容大部分来自Kris,我们的K大,在VTOL领域的大牛,在此,非常感谢K大。能引用K大的成果也是自己的荣幸,不便之处还请K大多多包涵,在此引用只是为方便自己日常学习,部分参数表里根据自身情况,增加了相应参数。 1.安装及下载Ardupilot官方固件: VTOL固件的来源可分为Ardupilot官方固... 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

解题思路
  1. 子序列要尽可能长,并且最大值和最小值之间的差,必须为1。所以这道题的迷惑点在于,最大值最小值之间,可以插入任意个数的元素。
  2. 但是只要我们把数字列出来,2,2,2,3,3,3,你会发现,根本不能插入任何其它数字,例如2,2,2,1,3,3,3, 此时的差可不是1,而是3-1=2了。
  3. 因此,这道题可以理解为,找数组中两个数,相差为1,并且两个元素的出现次数相加为最多。
  4. 法一,hash表:时间复杂度O(n),空间复杂度O(n). 可以使用hash表,记录每个元素的出现次数,如果两个元素相差为1,就记录它们的出现次数,最终返回最大的出现次数。
  5. 法二,排序+双指针:时间复杂度O( n ∗ l o g 2 N n*log_2{N} n∗log2​N),空间复杂度O(1). 先对数组排序,然后left指针指向前一个元素,right指针指向后一个元素,如果相差为1,记录它们的长度
代码

法一:hash表
在这里插入图片描述

class Solution {
    public int findLHS(int[] nums) {
        //hashMap表,key:当前元素值,value:出现次数
        Map<Integer,Integer> map = new HashMap<>();
        int res = 0;//最多的出现次数
        //遍历数组,如果当前元素第一次遇到,直接放入map中,次数置为1
        //如果不是第一次遇到,获取它已经出现的次数,+1
        for(int num:nums) map.put(num,map.getOrDefault(num,0)+1);
        //遍历key值,寻找每个key,在map中是否存在比它大1的key,如果存在,那么他俩可以组成一个子序列
        //他俩各自的出现次数就是子序列的长度
        for(int key:map.keySet()){
            //如果找到了,那么我们只保存最大的子序列长度
            if(map.containsKey(key + 1)) res = Math.max(res,map.get(key)+map.get(key+1));
        }
        return res;
    }
}
  1. 法二:排序+双指针,排序使用快速排序,时间复杂度O( n ∗ l o g 2 n n*log_2{n} n∗log2​n),双指针遍历两遍数组,时间复杂度O(2N), 最终时间复杂度O( n ∗ l o g 2 n n*log_2{n} n∗log2​n),空间复杂度O(1)。
    在这里插入图片描述
class Solution {
    public int findLHS(int[] nums) {
        Arrays.sort(nums);//先对数组排序O(N*log2N)
        int left = 0, right = 0;//双指针,指向两个相邻的,值不同的元素
        int cnt = 0, max = 0;//
        while(right < nums.length){//右指针不能越界
            //如果left指向的元素,和right指向的元素的差 > 1,left后移
            while(nums[left] + 1 < nums[right]) left++;
            //如果left和right所指元素的差,正好差1,说明这两个数组成的序列,满足条件
            if(nums[right] == nums[left] + 1){
                //right所指向的元素的后面,如果是重复的值,right右移,直到不重复为止
                while(right<nums.length && nums[right] == nums[left] + 1) right++;
                right--;//前移一个,就是最后一个重复的值
                cnt = right - left + 1;//计算子序列长度
                max = Math.max(max, cnt);//只保留较大的子序列长度
            }
            right++;//右指针不断后移
        }
        return max;
    }
}
数据增强综述及albumentations代码使用 数据增强综述及albumentations使用基于基本图形处理的数据增强 本文涉及到的资料: 1.A survey on Image Data Augmentation for Deep Learning 2.Albumentations: Fast and Flexible Image Augmentations 3.Code 基于基本图形处理的数据增强 1.翻转;2.旋转;3.仿射变换;4.色彩空间(RGB、YUV、CMY、HSV,在图像情感分析中会影响标签。最简单的方法就是只改变一个通道。对比度、直方 阅读详情

相关推荐

UE5网络模块实战:属性复制、RPC与联机开发踩坑指南

多人联机开发中,网络同步是核心难题。UE5网络模块以服务器权威为基础,通过Actor复制、RPC和所有权机制实现多端状态一致。理解属性复制与OnRep回调、区分Server/Client/Multicast RPC的适用场景,是构建稳定联机架构的关键。本文结合数字孪生与多端协作场景,探讨如何将渲染与逻辑分离,并针对打包后网络失效、端口防火墙、崩溃排查等工程实践问题给出解决方案。通过蓝图接口解耦表现层,利用C++创建StaticMesh组件实现服务器逻辑与客户端表现分离,同时注意专用服务器不加载渲染依赖(如D

weixin_29010003的博客 273

Java实现 LeetCode 594 最长和谐子序列(滑动窗口)

594. 最长和谐子序列 和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。 现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。 示例 1: 输入: [1,3,2,2,5,2,3,7] 输出: 5 原因: 最长的和谐数组是:[3,2,2,2,3]. 说明: 输入的数组长度最大不超过20,000. class Solution { public in...

南 墙 1万+

TwinCAT 3 实战指南:从系统配置到高级运动控制

本文详细介绍了TwinCAT 3工业自动化控制平台的实战应用,从系统配置、PLC编程到EtherCAT总线配置和高级运动控制。通过倍福(Beckhoff)的TwinCAT 3平台,工程师可以高效实现复杂的工业自动化任务,包括运动控制、PLC编程等。文章还提供了常见问题排查和性能优化技巧,帮助用户提升系统稳定性和实时性。

weixin_30831529的博客 305

LeetCode 594. 最长和谐子序列(map)

文章目录1. 题目2. 解题2.1 map+两次扫描2.2 map+一次扫描 1. 题目 和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。 现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。 示例 1: 输入: [1,3,2,2,5,2,3,7] 输出: 5 原因: 最长的和谐数组是:[3,2,2,2,3]. 说明: 输入的数组长度最大不超过20,000....

Michael是个半路程序员 1119

《AI大模型评测与智能测试》

第三篇“实践蓝图”(第6-7章)着眼于测试领域AI应用,重点介绍了RAG、AI Agent开发及构建端到端智能测试系统的方法。本书聚焦AI时代的“质量”核心,以“AI赋能测试”(AI For Testing)与“AI模型评测”(Testing For AI)为双轮驱动。内容不仅深入剖析如何科学度量AI大模型的内在质量,还系统讲解如何利用AI赋能传统软件测试,帮助读者贯通从模型原理、评测到应用开发的全链路知识。

酌沧 1142

滑模控制实战:用Python从零实现SMC算法(附完整代码)

本文通过Python实战,从零详解滑模控制(SMC)算法的核心原理与代码实现。文章聚焦于一阶系统,使用NumPy和Matplotlib逐步构建控制器,并针对SMC固有的抖振问题,详细讲解了边界层法的原理与实现,提供了完整的代码和参数调优指南,帮助读者直观理解并掌握这一鲁棒性极强的非线性控制方法。

weixin_29285605的博客 466

[LeetCode_594]Java算法学习日记_最长和谐子序列

JimmyZhan的Java算法学习日记-LeetCode_594题目一、暴力法求解二、HashMap 哈希映射1.代码如下2.部分语法解释3.执行信息如下总结 题目 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。 现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。 数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。 示例 1: 输入:nums = [1,3,2,2,5,2,3,7] 输出:

qq_40888930的博客 365

Pydoll浏览器自动化框架教程

让浏览器自动化回归本质。不再纠缠驱动兼容、不再手动处理验证码、不再因为请求和 UI 分裂而头疼。如果你经常做 Web 自动化、爬虫或者测试,不妨试试 Pydoll。也别忘了给项目点个 ⭐,让作者知道有人喜欢这个工具。👉GitHub 地址。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 204

最长和谐子序列_Java

题目:最长和谐子序列(力扣594) 题目描述: 和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。 现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。 示例 1: 输入: [1,3,2,2,5,2,3,7] 输出: 5 原因: 最长的和谐数组是:[3,2,2,2,3]. 说明: 输入的数组长度最大不超过20,000. 解题思路: 题目的不要求是子数组, (1...

Mary~fighting的博客 358

基于ZYNQ的HP总线与DDR交互:实现PL与PS高效数据传输的完整指南

本文将深入探讨如何通过AXI HP总线实现PL与PS的DDR交互,结合代码示例、硬件配置与创新优化,助力开发者掌握这一关键技术。ZYNQ内部通过AXI HP接口直接连接PL与DDR控制器,PL通过AXI协议发送读写请求,绕过PS的CPU直接操作DDR。通过AXI HP总线实现PL与PS的DDR交互,开发者可充分发挥ZYNQ异构架构的优势。在Xilinx ZYNQ系列芯片中,PS(Processing System)与PL(Programmable Logic)的协同设计是其核心优势。

QQ_778132974的博客 1225

uniapp [安卓苹果App端] - 详细实现PDF预览功能在线预览PDF文档,Uniapp App端实现pdf文件预览在线预览pdf二进制文件流、本地pdf文档、PDF文件地址url路径(解决白屏

uni-app,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果安卓app,uniapp在线预览pdf功能,在安卓苹果app平台实现PDF的预览查看,uniappApp端实现pdf文件预览,UNIAPP在线预览PDF文档,Uniappapp在线预览pdf文件流,从后端接口里获取pdf文件如何转成链接预览,预览pdf的插件,uni-app的pdf预览功能,uniapp使用pdf.js插件预览pdf文件,预览pdf白屏没有报错,打开后没反应,打开是空白,加载PDF时发生错误,如

🏆 前端领域优质创作者 1万+

LeetCode-594. Longest Harmonious Subsequence (JAVA)最长和谐子序列

LeetCode-594. Longest Harmonious Subsequence (JAVA)最长和谐子序列

mine_song的博客 2084

AUTOSAR从入门到精通-诊断事件管理模块(DEM)(四)

在 Autosar 中,诊断事件是指在车辆电子系统中发生的特定事件,可以用于诊断和故障排除。DEM模块通过EventId和相关的EventName来表示每个诊断事件。诊断事件的状态代表了监控器的结果,DEM模块通过RTE或其他BSW模块从SW-C接收监控器的结果。DEM模块使用EventId来管理系统中每个诊断事件的状态,并对各个测试结果执行所需的操作,例如存储冻结帧/拓展帧。所有监控器和BSW模块使用EventId作为符号化的EventName来管理诊断事件。

getusushu的博客 1510

力扣-594. 最长和谐子序列

本文探讨如何寻找数组中最长和谐子序列的长度。和谐子序列定义为子序列中最大值与最小值之差恰好为1。作者采用哈希表统计各数字出现次数,然后遍历查找相邻数字出现次数的最大和。核心思路是利用哈希表快速查询相邻数字的频率,避免复杂计算。该方法时间复杂度为O(n),适用于大规模数据。示例代码展示了具体实现,通过两次遍历即可解决问题。文章强调理解解题思路比单纯追求答案更重要,鼓励读者深入思考算法本质。

qq_71416673的博客 371

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Leetcode 594.最长和谐子序列

最长和谐子序列 和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。 现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。 示例 1: 输入: [1,3,2,2,5,2,3,7] 输出: 5 原因: 最长的和谐数组是:[3,2,2,2,3]. 说明: 输入的数组长度最大不超过20,000. 思路: 将数组中的元素作为ke...

kexinxin1的博客 203

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

小白水平理解面试经典题目LeetCode 594 Longest Harmonious Subsequence(最大和谐字符串)

这道题属于字符串类型题目,解决的办法还是有很多的,暴力算法,二分法,双指针等等。

心安成长的码字书房 691

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

最长和谐子序列-LeetCode

最长和谐子序列题目官方解法方法一:枚举方法二:哈希映射方法三:哈希映射 + 单次扫描哈希映射增强for循环 题目 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。 数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。 示例 1: 输入:nums = [1,3,2,2,5,2,3,7] 输出:5 解释:最长的和谐子序列是 [

luckydog的博客 514

594. 最长和谐子序列

和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。 现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。 示例 1: 输入: [1,3,2,2,5,2,3,7]输出: 5原因: 最长的和谐数组是:[3,2,2,2,3]. 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-harmoni...

weixin_30462049的博客 141

leetcode每日一题-594:最长和谐子序列

leetcode每日一题-594:最长和谐子序列 链接 最长和谐子序列 题目 分析 因为最大值和最小值差值为1,那么这个序列中就只能存在两种类型的数字。遍历数组每次以当前值为最小值,查询当前值加1的值的数量是多少,两种类型的数字之和就是一个和谐序列的长度。那么我们如何快速获得x+1的数量呢,我们可以先用哈希表存储每中类型数字的数量,然后直接获取即可。 代码 C++ class Solution { public: int findLHS(vector<int>&

qq_45826803的博客 948

leetcode 594. Longest Harmonious Subsequence | 594. 最长和谐子序列

题目 https://leetcode-cn.com/problems/longest-harmonious-subsequence/ 题解 我的解法 测试用例 [1] [1,2] [2,1] [3,1] [3,1,1] [3,5,5] [1,3,5,7] [2,2] [1,2,1,2,1,2,1,2,1,2] [3,3,3,2,2,2,1,1,1] [3,3,2] [1,3,2,2,5,2,3,7] import java.util.Arrays; class Solution { pu

寒泉 5万+

LeetCode 594. 最长和谐子序列

和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。 现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。 示例 1: 输入: [1,3,2,2,5,2,3,7] 输出: 5 原因: 最长的和谐数组是:[3,2,2,2,3]. class Solution { public int findLHS(int[] nums) { //使...

肉丸不肉 356

leetcode-最长和谐子序列(java版)

文章目录题目代码 题目 和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。 现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。 示例 1: 输入: [1,3,2,2,5,2,3,7] 输出: 5 原因: 最长的和谐数组是:[3,2,2,2,3]. 说明: 输入的数组长度最大不超过20,000. 代码 /* * @lc app=leetcode.cn id=...

lingle1的博客 362

LeetCode 第594题——最长和谐子序列

对数组进行排序后更方便统计相差最大等于1的元素个数,所以先对数组进行排序,排序后依次寻找相邻的所有相差最大为1的元素个数,求出最大值。数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。

weixin_74188242的博客 401

轻松解决最长和谐子序列问题

轻松解决最长和谐子序列问题题解,如有问题,欢迎评论或私信~

m0_59287223的博客 445

leetcode刷题记录

刷题过程记录

洪肥肥的博客 2063
上一篇: java数据结构与算法刷题-----LeetCode18. 四数之和
下一篇: java数据结构与算法刷题-----LeetCode128. 最长连续序列
ydenergy_殷志鹏
博客等级 码龄7年 5887粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值