标签:
题目描述:关于LRU的具体定义可以查看这个链接:
http://mcicpc.cs.atu.edu/archives/2012/mcpc2012/lru/lru.html
public class LRUCache { private Dictionary<int, int> _cache; private List<int> _usedKeys; private int _capacity; public LRUCache(int capacity) { _cache = new Dictionary<int, int>(); _usedKeys = new List<int>(); _capacity = capacity; } public int Get(int key) { if(!_cache.ContainsKey(key)){ return -1; } else{ _usedKeys.Remove(key); _usedKeys.Insert(0, key); return _cache[key]; } } public void Set(int key, int value) { if(_cache.ContainsKey(key)){ _cache[key] = value; _usedKeys.Remove(key); _usedKeys.Insert(0, key); } else{ if(_cache.Keys.Count < _capacity){ _cache.Add(key, value); _usedKeys.Insert(0, key); } else { var removing = _usedKeys.Last(); _usedKeys.RemoveAt(_usedKeys.Count - 1); _cache.Remove(removing); _cache.Add(key, value); _usedKeys.Insert(0, key); } } } }
标签:
原文地址:http://blog.csdn.net/lan_liang/article/details/49962311