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;
    }
};

解法二:排序后双指针

猜你喜欢

转载自www.cnblogs.com/ZSY-blog/p/12913294.html