和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。
现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。
#超出时间了
class Solution(object):
def findLHS(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
result=0
d={}
for i in set(nums):
d[i]=nums.count(i)
for i in set(nums):
if i+1 in nums:
if d[i]+d[i+1]>result:
result=d[i]+d[i+1]
return result
class Solution(object):
def findLHS(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
result=0
d=collections.Counter(nums)
for i in nums:
if i+1 in d:
result=max(result,d[i]+d[i+1])
return result
执行用时: 180 ms, 在Longest Harmonious Subsequence的Python提交中击败了26.17% 的用户
class Solution(object):
def findLHS(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
d={}
for i in nums:
if i not in d:
d[i]=1
else:
d[i]+=1
s=d.keys()
s.sort()
result=0
for i in range(len(s)-1):
if s[i+1]==s[i]+1:
result=max(result,d[s[i+1]]+d[s[i]])
return result
执行用时: 96 ms, 在Longest Harmonious Subsequence的Python提交中击败了89.26% 的用户
第一次超时间是做字典的方法耗时间了,需要N*2的时间,现在只需要N的时间