0
点赞
收藏
分享

微信扫一扫

【快乐水题】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. 最长和谐子序列_删除元素


举报

相关推荐

594. 最长和谐子序列

0 条评论