问题原文点击打开链接
注意问题中的序列,并不要求连续,所以只需要统计在数组中,符合差为1的数对出现的次数就可以了。
public int findLHS(int[] nums) {
if (nums.length == 0 || nums.length == 1) return 0;
Map<Integer,Integer> map = new HashMap<>();
for (int i = 0;i < nums.length; i++){
if (map.containsKey(nums[i])){
map.put(nums[i],map.get(nums[i])+1);
}else{
map.put(nums[i],1);
}
}
int res = 0;
for (Map.Entry<Integer,Integer> entry : map.entrySet()){
int key = entry.getKey();
if (map.containsKey(key+1)){
res = res>(entry.getValue()+map.get(key+1))?res:(entry.getValue()+map.get(key+1));
}else continue;
}
return res;
}