python[LeetCode]最長連続シーケンス
4217 ワード
並べ替えられていない整数配列を指定し、最長連続シーケンスの長さを見つけます.
要求アルゴリズムの時間的複雑度はO(n)である.
例
入力:[100,4,200,1,3,2]出力:4解釈:最長連続シーケンスは[1,2,3,4]である.その長さは4です.
考え方という問題は難しくないが、以下の状況を考慮しなければならない.一.配列が空の場合、戻り長は0 2となる.シーケンス[0,1,1,2]に遭遇した場合は、4ではなく長さ3を返す必要があります.
私の考え方は時間の複雑さはO(2 n)で、規範に合わないので、後で改善する時間があります.配列を(小さいものから大きいものまで)並べ替えてから、配列の要素を巡ります.現在の値が前の値より1大きい場合、temp+1、現在の値が前の値と等しい場合、pass(操作しない)はtempとresultの最大値をresultに返し、temp=1として遍歴を継続します.
コード68例、60 msかかり、50%python 3を破って記録を提出
要求アルゴリズムの時間的複雑度はO(n)である.
例
入力:[100,4,200,1,3,2]出力:4解釈:最長連続シーケンスは[1,2,3,4]である.その長さは4です.
考え方という問題は難しくないが、以下の状況を考慮しなければならない.一.配列が空の場合、戻り長は0 2となる.シーケンス[0,1,1,2]に遭遇した場合は、4ではなく長さ3を返す必要があります.
私の考え方は時間の複雑さはO(2 n)で、規範に合わないので、後で改善する時間があります.配列を(小さいものから大きいものまで)並べ替えてから、配列の要素を巡ります.現在の値が前の値より1大きい場合、temp+1、現在の値が前の値と等しい場合、pass(操作しない)はtempとresultの最大値をresultに返し、temp=1として遍歴を継続します.
コード68例、60 msかかり、50%python 3を破って記録を提出
class Solution:
def longestConsecutive(self, nums: List[int]) -> int:
if not nums:
return 0
nums.sort()
result = 1 # , 1
temp = 1 # ,
length = len(nums)
for i in range(1,length):
if (nums[i] -nums[i-1]) == 1:
temp += 1
elif (nums[i] -nums[i-1]) == 0:
pass
else:
result = max(result,temp)
temp = 1
result = max(result,temp)
return result