【快乐水题】594. 最长和谐子序列
生活随笔
收集整理的这篇文章主要介绍了
【快乐水题】594. 最长和谐子序列
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
原题:
力扣链接:594. 最长和谐子序列
题目简述:
和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。
现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。
数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。
解题思路
1.哈希计数;
2.然后计算差值为1的两个数的次数和;
3.over;
C++代码:
class Solution { public:int findLHS(vector<int>& nums) {unordered_map<int, int> umap;for(auto i : nums){++umap[i];}int nRetMax = 0;for(auto it = umap.begin();it != umap.end(); it++){//cout << it->first << " " << it->second << endl;if(umap.count(it->first + 1)){nRetMax = max(nRetMax, umap[it->first + 1] + it->second);}}return nRetMax;} };力扣结果展示:
总结
以上是生活随笔为你收集整理的【快乐水题】594. 最长和谐子序列的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 【快乐水题】677. 键值映射
- 下一篇: 2020年中国直播电商行业研究报告