題目鏈接
難度:簡單 ??????類型:
和諧數(shù)組是指一個數(shù)組里元素的最大值和最小值之間的差別正好是1。
現(xiàn)在,給定一個整數(shù)數(shù)組,你需要在所有可能的子序列中找到最長的和諧子序列的長度。
示例
輸入: [1,3,2,2,5,2,3,7]
輸出: 5
原因: 最長的和諧數(shù)組是:[3,2,2,2,3].
解題思路
統(tǒng)計每個數(shù)字的個數(shù),用哈希表保存,其中key是i,value是i的個數(shù)
遍歷哈希表,找出i和i+1最多的個數(shù),其中i在哈希表中,當(dāng)i+1不在哈希表時,該組合的總個數(shù)為0
代碼實現(xiàn)
from collections import Counter
class Solution:
def findLHS(self, nums: List[int]) -> int:
nums = Counter(nums)
max_len = 0
for i in nums:
max_len = max(max_len, nums[i]+nums[i+1] if nums[i+1] else 0)
return max_len