We define a harmonious array is an array where the difference between its maximum value and its minimum value is exactly 1.
Now, given an integer array, you need to find the length of its longest harmonious subsequence among all its possible subsequences.
Example 1:
Input: [1,3,2,2,5,2,3,7] Output: 5 Explanation: The longest harmonious subsequence is [3,2,2,2,3].
思路1:使用哈希表统计每个数出现的次数。然后遍历哈希表,对于每一个键,查找有没有key-1和key+1
class Solution {
public:
int findLHS(vector<int>& nums) {
unordered_map<int,int> flag;
for(auto i:nums)
flag[i]++;
int res=0;
for(int i=0;i<nums.size();i++)
{
int key=nums[i];
int count=max(flag[key+1],flag[key-1]);
if(count)
res=max(res,count+flag[key]);
}
return res;
}
};