Leetcode Contest 33
就着Gin的酒劲,我还能一次不WA的过了这次比赛哈哈。
第一题Longest Harmonious Subsequence
既然最大值与最小值恰好相差1,那么此子数组必定恰好有两个不一样的元素。我们只要统计每个元素出现的次数,然后枚举找出相邻两个元素出现次数之和的最大值就好。
class Solution(object):
def findLHS(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
cnt = {}
for n in nums:
cnt[n] = cnt.get(n, 0) + 1
ans = 0
for k, v in cnt.items():
if k-1 in cnt:
ans = max(ans, v+cnt[k-1])
if k+1 in cnt:
ans = max(ans, v+cnt[k+1])
return ans