快乐水题594. 最长和谐子序列
Posted 谁吃薄荷糖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快乐水题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. 最长和谐子序列的主要内容,如果未能解决你的问题,请参考以下文章
594. Longest Harmonious Subsequence 最长的和谐子序列