方法一,枚举
class Solution {
public int findLHS(int[] nums) {
int cnt = 0,res = 0;
boolean flag = false;
for(int i = 0;i<nums.length;i++)
{
for(int j = 0;j<nums.length;j++)
{
if(nums[i] == nums[j]) cnt++;
else if(nums[i]+1 == nums[j])
{
cnt++;
flag = true;
}
}
if(flag)
{
if(res<cnt) res = cnt;
}
//一次循环后记得清零
cnt = 0;
flag = false;
}
return res;
}
}
官方题解:
哈希表
class Solution {
public int findLHS(int[] nums) {
Map<Integer,Integer> map = new HashMap<>();
int res = 0;
for(int num : nums)
{
map.put(num,map.getOrDefault(num,0)+1);
}
for(int key : map.keySet())
{
if(map.containsKey(key+1))
res = Math.max(res,map.get(key)+map.get(key+1));
}
return res;
}
}