1. 程式人生 > >594. 最長和諧子序列

594. 最長和諧子序列

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