和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。

现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。

数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。

示例 1:

输入:nums = [1,3,2,2,5,2,3,7]
输出:5
解释:最长的和谐子序列是 [3,2,2,2,3]

示例 2:

输入:nums = [1,2,3,4]
输出:2

示例 3:

输入:nums = [1,1,1,1]
输出:0

提示:

  • 1 <= nums.length <= 2 * 10^4
  • -10^9 <= nums[i] <= 10^9

Python 解答:

class Solution:
    def findLHS(self, nums: List[int]) -> int:
        adic = {}
        max_len = 0
        for item in nums:
            if item not in adic.keys():
                adic[item] = 1
            else:
                adic[item] += 1
        for item in adic.keys():
            if item+1 in adic.keys():
                max_len = max(max_len, adic[item]+adic[item+1])
        return max_len
最后修改日期: 2021年5月22日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。