Advertisement
Guest User

Untitled

a guest
Jul 28th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. /**
  2. * @param {number} capacity
  3. */
  4. var LFUCache = function(capacity) {
  5.  
  6.  
  7. this.store = [];
  8.  
  9.  
  10. this.capacity = capacity;
  11. this.keys = {};
  12.  
  13. console.log(this)
  14. return this;
  15. };
  16.  
  17. /**
  18. * @param {number} key
  19. * @return {number}
  20. */
  21. LFUCache.prototype.get = function(key) {
  22.  
  23. if (this.store[key]) {
  24. console.log(this.store[key].value)
  25. this.store[key].accessed++;
  26. return this.store[key].value;
  27. } else {
  28. console.log(-1)
  29. return -1;
  30. }
  31. };
  32.  
  33. /**
  34. * @param {number} key
  35. * @param {number} value
  36. * @return {void}
  37. */
  38. LFUCache.prototype.put = function(key, value) {
  39.  
  40. if (this.store.length < this.capacity) {
  41. //is less than capacity
  42.  
  43. // search for key if not used insert
  44. console.log('undefinedmaye', this.store[key])
  45.  
  46. if (this.store[key].value === undefined) {
  47.  
  48. var obj = {}
  49. obj.time = new Date();
  50. obj.accessed = 0;
  51. obj.value = value;
  52.  
  53.  
  54. this.store.splice(key, 0, Object.create(obj))
  55.  
  56.  
  57. // to get the index with constant look up
  58. this.store.keys[key] = key;
  59.  
  60. } else {
  61. console.log('already present')
  62. return;
  63. }
  64. } else {
  65. // take out least frequesntly accessed
  66.  
  67.  
  68.  
  69.  
  70.  
  71. }
  72.  
  73. };
  74.  
  75. /**
  76. * Your LFUCache object will be instantiated and called as such:
  77. * var obj = Object.create(LFUCache).createNew(capacity)
  78. * var param_1 = obj.get(key)
  79. * obj.put(key,value)
  80. */
  81.  
  82.  
  83. // var obj = Object.create(LFUCache).createNew(7)
  84. // console.log(obj)
  85.  
  86. // var param_1 = obj.get(key)
  87. // obj.put(key,value)
  88.  
  89.  
  90.  
  91. var cache = new LFUCache( 5 );
  92.  
  93. cache.put(1, 1);
  94. cache.put(2, 2);
  95. cache.get(1); // returns 1
  96. cache.put(3, 3); // evicts key 2
  97. cache.get(2); // returns -1 (not found)
  98. cache.get(3); // returns 3.
  99. cache.put(4, 4); // evicts key 1.
  100. cache.get(1); // returns -1 (not found)
  101. cache.get(3); // returns 3
  102. cache.get(4); // returns 4
  103. console.log(cache)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement