最優解其實jdk中已經有解答,就是linkedhashmap,但自己在限定時間寫的話**量大很難保證不出錯,因此本例直接使用jdk中的hashmap+linkedlist實現。
由於實際使用的是linkedlist儲存最近使用的key,遍歷複雜度為o(n),因此速度並不快,只是更適合面試場合寫
其中主要需要注意list刪除時使用iterator,避免concurrentmodificationexception
class lrucache
public int get(int key)
}list.add(0, key);
return v;
}public void put(int key, int value) }}
valuemap.put(key, value);
list.add(0, key);
} else
}//新增新增的到佇列頭
list.add(0, key);
valuemap.put(key, value);
} else
}list.add(0, key);
valuemap.put(key, value);}}
}}
js Array操作的最簡短最容易理解方法
array 的方法 1 array.join 把所有元素用符號鏈結成string返回,如果元素不是基本型別,先呼叫tostring.它對應string.split arr 1,2,true,3,4,5 arr.join 1 2 true 3 4 5 2 array.reverse 逆序排列陣列 ar...
LRU Cache的簡單c 實現
lru cache是乙個cache的置換演算法,含義是 最近最少使用 把滿足 最近最少使用 的資料從cache中剔除出去,並且保證cache中第乙個資料是最近剛剛訪問的,因為這樣的資料更有可能被接下來的程式所訪問。lru的應用比較廣泛,最基礎的記憶體頁置換中就用了,對了,這裡有個概念要清楚一下,ca...
LRUCache演算法的簡單實現
lru是least recently used的縮寫,意為最近最少使用演算法。lrucache是一種常用的快取替換演算法,根據使用率淘汰資料,即使用率最小的會被淘汰,通常會用乙個雙向鍊錶來實現,在這個雙向鍊錶中,如果乙個cache被命中,則將這個資料移動到鍊錶的頭部,而不經常使用的cache就會逐漸...