// 削除検索暴力、まだ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 = .num [I]; ELES [I] = I .POSオン; } ソート(ELES、ELES +()、CoMPの上nums.sizeオン); のための(INT I = 1; I <nums.size(); I ++){ IF(ELESオン[I] == .num 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は、 } を返す 偽。 } }。
LeetCodeブラシタイトルレコード(2) - 反復エレメント219の存在Ⅱ
おすすめ
転載: www.cnblogs.com/esperanza/p/12166362.html
おすすめ
ランキング