問題:https://leetcode.com/problems/snapshot-array/
暴力のこの質問は(すべてのスナップショットを抑えている)空間の制約を超えてしまうんが、二回、直接スナップショットがレコードを複製する必要がない値を変更しませんが、スペースの使用を低減する必要があります。バイナリ検索を使用する場合は、次にスナップショットの現在の値についてのレコード、および各インデックスの特定のスナップショットIDの現在の値を見つける各変形の値は、スナップショットIDに対応した値に等しい未満見えます。
クラスSnapshotArray { パブリック: unordered_map < int型、マップ< int型、int型 >> ARR。 SnapshotArray(int型の長さ){ } ボイド 集合(int型のインデックス、INT ヴァル){ ARR [インデックス] [カウント] = ヴァルと、 } int型のカウント= 0 ; int型のスナップ(){ 戻り値の数++ ; } int型 のget(int型のインデックス、int型snap_id){ 場合(arr.find(インデックス)== arr.end())戻り 0 。 オートは = ARR [インデックス] .upper_bound(snap_id)を、 もし(それは== ARR [インデックス] .begin()) { 戻り 0 。 } 戻り PREV(IT) - > 第二; } }。