指定された整数配列がソートされていないために、最も長い連続した配列の長さを求めます。
アルゴリズムの複雑さの時間要件は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)