1.特定のトピック
指定された整数配列がソートされていないために、最も長い連続した配列の長さを求めます。アルゴリズムの複雑さの時間要件はO(N)です。
例:
入力:[100、4、200、1、3、2]出力:4の説明:最長の連続配列である[1、2、3、4]。その長さは4です。
アイデアの2.分析
タイトルが連続シーケンスを必要としない限り、アレイに隣接いくつか存在するかどうかを確認するための番号として、そうHashSetの達成への要素として考えるための要素は、元の配列に順序付けされる O(1)時間クエリ。
3.コード
1つの 公共 INT longestConsecutive(INT [] NUMS){ 2 HashSetのセット= 新しいHashSetの()。 3 INT = 0最長。 4 のための(INT NUM:NUMS){ 5 set.add(NUM)。 6 } 7 用(INT NUM:NUMS){ 8 であれば(set.remove(NUM)){ 9 int型のカウント= 1 。 10 INTの電流= NUM。 11 しばらく(set.remove( -現在))のカウント++ ; 12 電流= NUM。 13 一方(set.remove(++現在))のカウント++ 。 14 最長= Math.max(最長、数) 15 } 16 } 17 リターン最長。 18 }