594 最長和諧子串行 簡單)

2021-09-03 07:00:16 字數 1325 閱讀 1407

和諧陣列是指乙個陣列裡元素的最大值和最小值之間的差別正好是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...