Longest Harmonious Subsequence

定义一个和谐子序列为序列中最大值和最小值的差是1, 求最大和谐子序列.

这题是counting题目, 找到所有数字的count, 然后找一个数字和其的前后数字的count, 求最大即可.

class Solution {
    public int findLHS(int[] nums) { 
        Map<Integer, Integer> map = new HashMap<>();
        for(int n : nums)
            map.put(n, map.getOrDefault(n, 0) + 1);
        int res = 0;
        for(int n : nums){
            int nn = map.get(n);
            Integer np = map.getOrDefault(n - 1, null);
            Integer nm = map.getOrDefault(n + 1, null);
            if(np == null && nm == null)
                continue;
            if(np != null)
                res = Math.max(res, nn + np);
            if(nm != null)
                res = Math.max(res, nn + nm);
                
        }
        return res;
    }
}