LeetCodeブラシタイトルレコード(2) - 反復エレメント219の存在Ⅱ

// 削除検索暴力、まだ2つのアイデアている
 // 1のアイデア:再反復配列が隣接する二つの数を比較すると、ソートされた後、最初のソート配列は、(O(nlogn))ソートさは同じです。Ⅰ問題にソート)素子の記録位置に対応する構造を構築し、COMP()関数を書き換える必要が構造(の配列をソートするために使用される場合、異なっています。ElementWithPosition構造体
{ 
    INT NUM; 
    INT POS; 
}; 

クラスソリューション{ 
パブリック:
    BOOLの静的器COMP(ElementWithPosition A、B ElementWithPosition){ 
        戻りa.num <b.num; 
    } 
    BOOL containsNearbyDuplicate(ベクトル<整数> NUMSと、INT K) { 
        IF(nums.empty()|| K <= 0)
            偽に戻り、
        ElementWithPosition ELESの[nums.size()]; 
        のための(INT I = 0; I <nums.size(); I ++){ 
            ELESオン[I] NUMS = .nu​​m [I];  
            ELES [I] = I .POSオン;
        }
        ソート(ELES、ELES +()、CoMPの上nums.sizeオン); 
        のための(INT I = 1; I <nums.size(); I ++){ 
            IF(ELESオン[I] == .nu​​m ELESの[-I 1]。 && ABS NUM(ELESオン[I] .POS - ELESに.POS [-I 1。])<= K)
            をtrueに戻り; 
        } 
        偽に戻り; 
    } 
}; 
// 考えII:ハッシュ(Nを使用して)。ハッシュマップ、ベクトルのキー番号、格納されたインデックスに対応する値を使用。トラバースベクトル、電流値がハッシュマップ内に既に存在する場合、現在のインデックスとの間の屈折率差を決定し、ハッシュマップレコードがkよりも大きくない、そしてもしそうであれば、trueを返し、値がそうでなければ、更新インデックスハッシュマップは、次の番号に進み。
クラス解決{
 パブリックBOOL containsNearbyDuplicate(ベクトル< INT > NUMSと、int型K){ 
        unordered_map < int型int型の >マップ。
        INTは iは= 0 ; I <nums.size(); I ++ 
        { 
            場合(!map.count(NUMS [I])= NULL && Iマップ[NUMS [I] <= k)は戻り 
            地図[NUMS [I] = iは、
        } 
            を返す 
        } 
}。

おすすめ

転載: www.cnblogs.com/esperanza/p/12166362.html