和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。
现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。
示例 1:
输入: [1,3,2,2,5,2,3,7] 输出: 5 原因: 最长的和谐数组是:[3,2,2,2,3].
说明: 输入的数组长度最大不超过20,000.
题目标签:Hash Table
题目链接:LeetCode / LeetCode中国
Language | Runtime | Memory |
---|---|---|
python3 | 148 ms | N/A |
class Solution:
def findLHS(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
res = 0
cnt = sorted(list(collections.Counter(nums).items()), key=lambda x: x[0])
for i in range(len(cnt)-1):
if abs(cnt[i][0] - cnt[i+1][0]) == 1:
res = max(res, cnt[i][1] + cnt[i+1][1])
return res