leetcodeブラシ15タイトル

今日の話題LeetCodeは146タイトルを磨くで、タイトルは(最低使用)LRUキャッシュメカニズムを実装し、データへのアクセスをサポートし、データを書き込むために必要なGET、PUT 
  データ(キー)ゲット:キーがキャッシュに存在する場合、取得それ以外の場合は-1、キー値を対応
  つけたデータを書き込む(キー、値):キーが存在しない場合は、データが書き込まれます。キャッシュサイズは、時間の上限に達すると、
このように、新しいデータ値最低使用データを書き込む新しいデータ値の余地残し間に除去されなければならない
、このソリューションのあなたは、リストを使用することができ、配列を使用することができ、非常に豊かなトピックです。私は、ここで使用される次のように溶液の配列は、特異的にコードがあります。
輸入java.time.temporal.ValueRange。
輸入java.util.HashMapを;
輸入java.util.Map; 


パブリック クラスLRUCache_146_middle {
     プライベート int型の容量;
    プライベート int型の数。
    プライベート int型[] KEY。
    プライベート int型[] VALUE。
    公共 LRUCache_146_middle(int型の容量){
         この .capacity = 容量。
        この .count = 0; // 记录当前存储的数据个数
        この .KEY = 新しい int型[容量]。
        この.VALUE = 新しい int型[容量]。
    } 
    公共 INTは(取得INT キー){
         場合(== 0をカウント){
             戻り -1 
        } 
        int型の結果= -1 以下のためにint型 i = 0; iは数<; iは++ ){
             場合(KEY [I] == キー){ 
                結果 = VALUE [I]。
                VALUE = 移動(VALUE、カウント、I)。
                KEY = 移動(KEY、カウント、I);
                休憩 ;
            } 
        } 
        のSystem.out.println(結果)。
        戻り値の結果; 
    } 
    公共 ボイド PUT(INTキー、int型の値){
         場合(のcontainsKey(KEY、カウント、キー)[0] == 1 ){
             int型のインデックス=のcontainsKey(KEY、カウント、キー)[1 ]。
            VALUE [インデックス] = 値。
            VALUE = 移動(VALUE、カウント、インデックス)
            KEY = 移動(KEY、カウント、インデックス); 
        } それ以外の 場合(==カウント{容量)
             // 保存的数据满了
            について int型I = 0; I <カウント-1を、I ++ ){ 
                KEY [I] = KEY [I + 1 ]。
                VALUE [I] = VALUE [I + 1 ]。
            } 
            KEY [カウント -1] = キー。
            VALUE [カウント -1] = 値。
        } { 
            VALUE [カウント] = 値。
            KEY [回数] = キー。
            カウント ++ ; 
        } 
    } 
    パブリック 静的 INT []のcontainsKey(INT []キー、int型の数、INTキー){
         int型 []結果= 新しい INT [2 ]。
        以下のためにint型 i = 0; iは数<; iは++ ){
             場合(KEY [I] == キー){ 
                結果[ 0] = 1 ; 
                結果[ 1] = I。
                破ります; 
            } 
        } 
        戻り値の結果; 
    } 
    パブリック 静的 INT []移動(INT [] NUMS、int型のカウントは、int型I){
         int型の TEMP = NUMS [I]。
        INT ; jは<カウント-1; J ++ J = I ){ 
            NUMS [J] = NUMS [J + 1 ]。
        } 
        NUMS [カウント -1] = TEMP。
        リターンNUMS。
    } 

    パブリック 静的 ボイドメイン(文字列[]引数){ 
        LRUCache_146_middleのLRU = 新しい LRUCache_146_middle(2 )。
        lru.put( 2,1 )。
        lru.put( 2,2 )。
        lru.get( 2 )。
        lru.put( 1,1 )。
        lru.put( 4,1 )。
        lru.get( 2 )。
    } 
}

 

おすすめ

転載: www.cnblogs.com/cquer-xjtuer-lys/p/11404012.html