トピックへのリンク:https://leetcode-cn.com/problems/longest-consecutive-sequence/
効果の件名:
わずか。
分析:
その重複した値を、それが空白のシーケンスに注意してください。
コードは以下の通りであります:
1 クラスソリューション{ 2 公共: 3 INT longestConsecutive(ベクトル< INT >&NUMS){ 4 unordered_map < INT、INT > M1; // 最長の連続した配列の鍵長を保存主導 。5 unordered_map < INT、INT > 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 < INT、INT >&ヘクトパスカル、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 }。