快乐水题594. 最长和谐子序列

Posted 谁吃薄荷糖

tags:

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

leetcode 594最长和谐子序列

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

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

594. 最长和谐子序列难度: 一般 / 思维

594. 最长和谐子序列难度: 一般 / 思维

最优解Leecode 594. 最长和谐子序列——Leecode每日一题系列