最长和谐子序列 用一个map<int,vector<int>>记录一下数组中元素出现的下标,或者用map<int,int>记录元素出现的次数,是一种很常见的数组处理的方式。
class Solution {
public:
int findLHS(vector
<int>& nums
) {
map
<int,int> mp
;
int ans
= 0;
for(int i
=0;i
<nums
.size();i
++){
mp
[nums
[i
]]++;
}
vector
<int> keys
;
for(auto it
:mp
){
keys
.push_back(it
.first
);
}
for(int i
=1;i
<keys
.size();i
++){
if(keys
[i
]==keys
[i
-1]+1){
ans
= max(mp
[keys
[i
]]+mp
[keys
[i
-1]],ans
);
}
}
return ans
;
}
};