Menu
CoddyTech

Longest Consecutive Sequence

ふつうハッシュpython iconjava iconcpp iconc iconjs icon+10

整数の配列 nums が順不同で与えられます。連続する数列とは、nums 内のどこかにそれぞれ現れる x、x+1、x+2 などの値の集まりです。最長の連続する数列の長さを返してください。複数回現れる値も1回として数えます。

関数

longestConsecutive(nums: integer-array) → integer
numsinteger-array
整数を、任意の順序で、重複を許可して
戻り値integer
nums に含まれる連続する値の最長の並びの長さ

制約

  • 1 ≤ nums.length ≤ 104
  • -109 ≤ nums[i] ≤ 109
  • 値は重複してもかまいません。配列内の位置は重要ではなく、どの値が含まれているかだけが重要です。

例

入力
nums = [40, 4, 39, 1, 3, 2, 41]
出力
4
説明
1、2、3、4はすべて存在しており、配列内に散らばっているにもかかわらず、4つ連続しています。もう一方の連続した値のまとまりである39から41までは、値が3つしかありません。

lock icon提出時に隠しテスト+17件

challenge icon

発展問題

値が1つずつ届き、そのたびにこれまでの最長連続部分を報告しなければならないとします。値ごとの平均時間 O(1) で答えを最新の状態に保てますか?

コードをリセット
def longestConsecutive(nums):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

ケース3

入力

nums = [40, 4, 39, 1, 3, 2, 41]

期待値

4