CODE-0003 · kimi-k2.7-code (default)
class LRUCache:
    def __init__(self, capacity: int):
        self.capacity = capacity
        self.cache = {}
        self.order = {}

    def get(self, key: int) -> int:
        if self.capacity == 0 or key not in self.cache:
            return -1
        self._update_order(key)
        return self.cache[key]

    def put(self, key: int, value: int) -> None:
        if self.capacity == 0:
            return
        if key in self.cache:
            self.cache[key] = value
            self._update_order(key)
            return
        if len(self.cache) >= self.capacity:
            self._evict_lru()
        self.cache[key] = value
        self._update_order(key)

    def _update_order(self, key: int) -> None:
        if key in self.order:
            del self.order[key]
        self.order[key] = None

    def _evict_lru(self) -> None:
        lru_key = next(iter(self.order))
        del self.order[lru_key]
        del self.cache[lru_key]