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

Posted zsy-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 594. 最长和谐子序列 Longest Harmonious Subsequence (Easy)相关的知识,希望对你有一定的参考价值。

和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。

现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。

技术图片

来源:力扣(LeetCode)


 解法一:哈希表

class Solution {
public:
    int findLHS(vector<int>& nums) {

        unordered_map<int, int> hashMap;
        for (int num : nums)
            ++hashMap[num];

        int longest = 0;
        for (auto num : hashMap)  //num <int, int> = <first, second>
        {
            if (hashMap.count(num.first + 1))  //最大值和最小值之间的差别正好是1
                longest = max(num.second + hashMap[num.first + 1], longest);
        }
        return longest;
    }
};

 

解法二:排序后双指针

 

以上是关于LeetCode 594. 最长和谐子序列 Longest Harmonious Subsequence (Easy)的主要内容,如果未能解决你的问题,请参考以下文章

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

LeetCode 594 最长和谐子序列[双指针Map] HERODING的LeetCode之路

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

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

LeetCode 397. 整数替换 / 594. 最长和谐子序列 / 559. N 叉树的最大深度

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