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