Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @param {number} capacity
- */
- var LFUCache = function(capacity) {
- this.store = [];
- this.capacity = capacity;
- this.keys = {};
- console.log(this)
- return this;
- };
- /**
- * @param {number} key
- * @return {number}
- */
- LFUCache.prototype.get = function(key) {
- if (this.store[key]) {
- console.log(this.store[key].value)
- this.store[key].accessed++;
- return this.store[key].value;
- } else {
- console.log(-1)
- return -1;
- }
- };
- /**
- * @param {number} key
- * @param {number} value
- * @return {void}
- */
- LFUCache.prototype.put = function(key, value) {
- if (this.store.length < this.capacity) {
- //is less than capacity
- // search for key if not used insert
- console.log('undefinedmaye', this.store[key])
- if (this.store[key].value === undefined) {
- var obj = {}
- obj.time = new Date();
- obj.accessed = 0;
- obj.value = value;
- this.store.splice(key, 0, Object.create(obj))
- // to get the index with constant look up
- this.store.keys[key] = key;
- } else {
- console.log('already present')
- return;
- }
- } else {
- // take out least frequesntly accessed
- }
- };
- /**
- * Your LFUCache object will be instantiated and called as such:
- * var obj = Object.create(LFUCache).createNew(capacity)
- * var param_1 = obj.get(key)
- * obj.put(key,value)
- */
- // var obj = Object.create(LFUCache).createNew(7)
- // console.log(obj)
- // var param_1 = obj.get(key)
- // obj.put(key,value)
- var cache = new LFUCache( 5 );
- cache.put(1, 1);
- cache.put(2, 2);
- cache.get(1); // returns 1
- cache.put(3, 3); // evicts key 2
- cache.get(2); // returns -1 (not found)
- cache.get(3); // returns 3.
- cache.put(4, 4); // evicts key 1.
- cache.get(1); // returns -1 (not found)
- cache.get(3); // returns 3
- cache.get(4); // returns 4
- console.log(cache)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement