594. 最長和諧子序列
阿新 • • 發佈:2018-12-11
594.最長和諧子序列
和諧陣列是指一個數組裡元素的最大值和最小值之間的差別正好是1。
現在,給定一個整數陣列,你需要在所有可能的子序列中找到最長的和諧子序列的長度。
示例 1:
輸入: [1,3,2,2,5,2,3,7] 輸出: 5 原因: 最長的和諧陣列是:[3,2,2,2,3].
說明: 輸入的陣列長度最大不超過20,000.
**分析:**就是求大小相差1的數個數總和。
class Solution {
public:
int findLHS(vector<int>& nums) {
map<int,int> m;
for (int i=0;i<nums.size();i++)
{
m[nums[i]]++;
}
int sum=0;
if(m.size()<=1) return 0;
int max=0;
for(auto i:m)
{
if(m.find(i.first+1)!=m.end())
{
max=std::max(max,m[i.first]+m[i.first+1]);
}
}
return max;
}
};