#include <unordered_map>
#include <vector>
 
class Solution {
public:
    int findLHS(std::vector<int>& nums) {
        std::unordered_map<int, int> freq;
 
        for (const int& n : nums) {
            if (freq.contains(n)) freq[n]++;
            else freq[n] = 1;
        }
 
        int max_n_np1_sum = 0;
 
        for (const auto& pair : freq) {
            if (
                freq.contains(pair.first + 1)
                &&
                freq[pair.first] + freq[pair.first + 1] > max_n_np1_sum
            ) {
                max_n_np1_sum = freq[pair.first] + freq[pair.first + 1];
            }
        }
 
        return max_n_np1_sum;
    }
};