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.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-harmonious-subsequence
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
2.1 map+两次扫描
- 一次扫描计数
- 一次扫描判断前后迭代器key是否相差1,是,则将前后value相加(map是有序的)
class Solution {public:int findLHS(vector<int>& nums) {if(nums.empty())return 0;map<int,int> m;for(int num:nums)m[num]++;int len = 0;auto it1 = m.begin(), it2 = ++m.begin();for( ; it2 != m.end(); ++it2){if(it1->first+1 == it2->first)len = max(len, it1->second+it2->second);it1 = it2;}return len;}
};
2.2 map+一次扫描
- 扫描到key,其value计数
- 同时检查key-1,key+1,存在否,更新最大长度
class Solution {public:int findLHS(vector<int>& nums) {if(nums.empty())return 0;map<int,int> m;int len = 0;for(int num:nums){m[num]++;//len = max(len,max(m[num]+m[num-1],m[num]+m[num+1]));//错误//如果相邻的key不存在,答案就错了if(m.count(num-1))len = max(len, m[num]+m[num-1]);if(m.count(num+1) != 0)len = max(len, m[num]+m[num+1]);}return len;}
};
LeetCode 594. 最长和谐子序列(map)相关推荐
- Leetcode 594. 最长和谐子序列 C++
Leetcode 594. 最长和谐子序列 题目 和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1. 现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度. 示例: ...
- Leetcode 594. 最长和谐子序列
和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1. 现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度. 示例 1:输入: [1,3,2,2,5,2,3,7] 输 ...
- leetcode 594 最长和谐子序列
https://leetcode-cn.com/problems/longest-harmonious-subsequence/ 题目 和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1 . ...
- leetcode 594. 最长和谐子序列python
题目描述: 题解一: 本来打算用滑动窗口,但题目要求的子序列也不是连续的. 1.先将输入nums按照从小到大排序. 2.用一个dict记录nums中每个数字出现的次数,key为数字,value为出现 ...
- leetcode 594最长和谐子序列
class Solution { public:int findLHS(vector<int>& nums) {int res=0;map<int,int> m;for ...
- 【LeetCode】594. 最长和谐子序列(js 实现)
1.题目 594. 最长和谐子序列 - 力扣(LeetCode) (leetcode-cn.com) 2.实现 (1)方法一:哈希表(个人感觉这个更好理解,可能我对滑动窗口的做法不太熟悉吧) 代码 / ...
- ( 哈希表) 594. 最长和谐子序列 ——【Leetcode每日一题】
❓594. 最长和谐子序列 难度:简单 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 . 现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度. ...
- 【快乐水题】594. 最长和谐子序列
原题: 力扣链接:594. 最长和谐子序列 题目简述: 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 . 现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐 ...
- 594. 最长和谐子序列
和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1. 现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度. 示例 1: 输入: [1,3,2,2,5,2,3,7] ...
最新文章
- java项目新东方在线源码_基于JSP的在线考试系统-JavaWeb项目-有源码
- 业界丨AI公司魅力榜:谷歌最慷慨排第二,最抠门的你应该能想到
- android--------阿里 AndFix 热修复
- LDA基本介绍以及LDA源码分析(BLEI)
- proDAD Erazr便携版
- AI CC2018软件安装教程
- iphone开发之私有库private frameworks
- Android Studio升级到3.0,抛出Aapt2Exception异常
- leetcode(106)从中序遍历和后序遍历构建二叉树
- c语言调试的意义,C语言的调试
- Java实现仿QQ登陆、好友界面(可连接数据库)
- wps小写金额转大写快捷键_日记坊 - excel小写金额快速转换大写的几个小技巧
- 程序员如何选择外包平台
- html怎么设置空链接,HTML a标签之空链接
- 宝付浅谈物流无人机发展历程
- Qt,C++ 仿MAC桌面程序,DOCKBAR
- 项目分享之敲击床头盒控制床头灯的开关
- 任意列+左右两列等高布局,并要求有最小高度
- linux 内存 参数,linux free命令参数及用法详解(linux查看内存命令)
- 什么是代码签名?代码签名的好处
热门文章
- 【python】生成器
- [MathType需要安装新版的MT EXtra字体]解决方法
- POJ_1862 Stripies 【贪心】
- linux嵌入式开发流程,听听牛人怎么说
- python学习笔记(二十)初识面向对象
- 【opencv学习笔记八】创建TrackBar轨迹条
- 【java设计模式】【行为模式Behavioral Pattern】迭代器模式Iterator Pattern
- Linux Kernel ‘mp_get_count()’函数本地信息泄露漏洞
- 查看系统表存储过程名称
- QTreeWidget的基本操作