Skip to content

Instantly share code, notes, and snippets.

@wovalle
Created May 23, 2020 18:53
Show Gist options
  • Save wovalle/4e84585dc031aea97ca66eb93cd0414d to your computer and use it in GitHub Desktop.
Save wovalle/4e84585dc031aea97ca66eb93cd0414d to your computer and use it in GitHub Desktop.
1337
May Challenge: https://gist.github.com/wovalle/a86a76bc20d8c886342040f54875f291
@wovalle
Copy link
Author

wovalle commented Jun 6, 2020

// https://leetcode.com/problems/lru-cache
class LRUCache {
    constructor(capacity) {
        this.capacity = capacity
        this.keys = new Set()
        this.store = new Map()
    }

    get(key) {
        if (this.keys.has(key)) {
            this.keys.delete(key)
            this.keys.add(key)
            return this.store.get(key)
        }
        else {
            return -1
        }

    }

    put(key, value) {
        if (this.get(key) !== -1) {
            this.store.set(key, value)
            return;
        }
        
        if (this.keys.size === this.capacity) {
            const nextKey = this.keys.values().next().value
            this.keys.delete(nextKey)
            this.store.delete(nextKey)
        }
        
        this.keys.add(key)
        this.store.set(key, value)
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment