当前位置:   article > 正文

LeetCode 594. 最长和谐子序列(哈希映射 + 单次扫描)_和谐连续序列

和谐连续序列

1.题目

和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。
现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。

示例 1:

输入: [1,3,2,2,5,2,3,7]
输出: 5
原因: 最长的和谐数组是:[3,2,2,2,3].
说明: 输入的数组长度最大不超过20,000.

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

来源:力扣(LeetCode
链接:https://leetcode-cn.com/problems/longest-harmonious-subsequence
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2.题解

一个循环内,每次添加元素时,检查比当前元素大一或小一的个数中的较大者,加上当前元素的数量更新res。

class Solution
{
public:
    int findLHS(vector<int>& nums)
    {
        unordered_map<int, int>mp;
        int res = 0;
        for (int i : nums)
        {
            mp[i]++;
            if (mp[i+1]!=0)
                res = max(res, mp[i] + mp[i+1]);
            if (mp[i-1]!=0)
                res = max(res, mp[i] + mp[i-1]);
        }
        return res;
    }
};

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/398289
推荐阅读
相关标签
  

闽ICP备14008679号