和諧陣列是指乙個陣列裡元素的最大值和最小值之間的差別正好是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的時間
594 最長和諧子串行
題目描述 和諧陣列是指乙個陣列裡元素的最大值和最小值之間的差別正好是1。現在,給定乙個整數陣列,你需要在所有可能的子串行中找到最長的和諧子串行的長度。示例 1 輸入 1,3,2,2,5,2,3,7 輸出 5 原因 最長的和諧陣列是 3,2,2,2,3 說明 輸入的陣列長度最大不超過20,000.方法...
594 最長和諧子串行
和諧陣列是指乙個陣列裡元素的最大值和最小值之間的差別正好是1。現在,給你乙個整數陣列nums,請你在所有可能的子串行中找到最長的和諧子串行的長度。陣列的子串行是乙個由陣列派生出來的序列,它可以通過刪除一些元素或不刪除元素 且不改變其餘元素的順序而得到。示例 1 輸入 nums 1,3,2,2,5,2...
594 最長和諧子串行
和諧陣列是指乙個陣列裡元素的最大值和最小值之間的差別正好是1。現在,給定乙個整數陣列,你需要在所有可能的子串行中找到最長的和諧子串行的長度。示例 1 輸入 1,3,2,2,5,2,3,7 輸出 5 原因 最長的和諧陣列是 3,2,2,2,3 1 import j a.util.hashmap 2im...