LeetCode - 128--最長の連続したシーケンス(パイソン)

指定された整数配列がソートされていないために、最も長い連続した配列の長さを求めます。

アルゴリズムの複雑さの時間要件はO(N)です。

例:

入力:[100、4、200、1、3、2]
出力:4の
説明:最長の連続配列である[1、2、3、4]。その長さは4です。

暴力のタイムアウト。

クラスソリューション:
     DEF longestConsecutive(自己、NUMS:リスト[INT]) - > INT:
        longestSequence = 0
         のために NUM NUMS:
            curNum = NUM 
            ストリーク = 1 一方 curNum +1 NUMS:
                curNum + = 1つの
                ストリーク + = 1 
            longestSequence = MAX(longestSequence、ストリーク)
         リターン longestSequence
            
            

最初の数字が1未満であるか否かを決定する前に、順にリストをソートし、最後のものは、その配列の最長の連続部分、時間の最終比再び注目されてもよいです

1  クラスのソリューション:
 2      DEF longestConsecutive(自己、NUMS:リスト[INT]) - > INT:
 3          なら ないNUMS:
 4              戻り0
 5          nums.sort()
 6          longestSequence = 1
 7          curStreak = 1
 8          のための I における範囲(1 、LEN(NUMS)):
 9              なら!NUMS [I] = NUMS [I-1 ]:
 10                  であれば NUMS [I] == NUMS [I-1] +1 11                      curStreak + = 1
 12                  13                     longestSequence = MAX(longestSequence、curStreak)
 14                      curStreak = 1つの
 15          リターン MAX(longestSequence、curStreak)   

 

おすすめ

転載: www.cnblogs.com/NPC-assange/p/11531443.html