LeetCode每日一题:594. 最长和谐子序列【2021/11/20】

331 阅读1分钟

题目链接:594. 最长和谐子序列 - 力扣(LeetCode) (leetcode-cn.com)

难度:Easy

numnum 作为 keykeynumnum 出现的次数作为 valuevalueMapMap,统计相邻(xxx+1x+1)两元素出现的次数,更新答案。

特殊的,如果 MapMap 元素个数为 11,答案为 00

#define max(a,b) (a>b?a:b)
class Solution {
public:
    int findLHS(vector<int>& nums) {
        map<int,int>m;
        for(auto& num:nums){
            if(m[num]){
                m[num] = m[num] + 1;
            } else {
                m[num] = 1;
            }
        }

        int ans = 0;
        for(auto& p:m){
            int k = p.first, v = p.second;
            // 同时过滤掉最后一个元素
            if(m.find(k+1) == m.end()){
                continue;
            }
            ans = max(ans, v + m[k+1]);
        }
        return ans;
    }
};