Leetcode最長の連続配列

トピックへのリンク:https://leetcode-cn.com/problems/longest-consecutive-sequence/

効果の件名:

  わずか。

分析:

  その重複した値を、それが空白のシーケンスに注意してください。

コードは以下の通りであります:

1  クラスソリューション{
 2  公共3      INT longestConsecutive(ベクトル< INT >&NUMS){
 4          unordered_map < INTINT > M1; // 最長の連続した配列の鍵長を保存主導
。5          unordered_map < INTINT > M2。// キーの長さが最も長い連続した配列の最後に格納されている
6。          unordered_set < INT > VIS; // 数があったかどうかをチェック
7。         INT ANS = 0 ;
 8          
。9          INT= I 0、Iは(nums.sizeを<); ++ I){
 10              IF!(vis.find(NUMS [I])= vis.end())続行;
 11              vis.insert(NUMS [I])。
 12は、             
13である              M1 [NUMS [I] M2 = [NUMS [I] = 1 ;
 14              
15              のiF(m2.find(NUMS [I] - 。1!)= m2.end()){ // かどうかをチェックがNUMSに[i]は-配列終了
16                  スプライス(NUMSを[I] - 1、NUMS [I]、M2、M1); // ステッチ
17              }
 18が             IF(m1.find(NUMS [I] + 1)! m1.end =()){ //シーケンスの開始時に[I] + 1 NUMSに存在するか否かをチェック
。19                  スプライス(NUMS [I]、NUMS [I] + 。1、M2、M1); // 縫合
20はである             }
 21れる         }
 22である         
23ことである         ため(:M1オート&X) = ANS MAX(ANS、x.second);
 24          
25          戻りANS;
 26である     }
 27      
28      // 配列Bの端部に接合し、シーケンスが始まる
29      インラインボイドスプライス(int型 B、INT、unordered_map < INTINT >&ヘクトパスカル、unordered_map < int型int型 >&MA){
 30          MB [A + mAの[A] - 1 ] =ミリアンペア[B - MB [B] + 1 ] = MB [B] + mAの[A]。
31          mA.erase(A)。
32          mB.erase(B)。
33      }
 34 }。
コードの表示

 

おすすめ

転載: www.cnblogs.com/zaq19970105/p/11408556.html