返回

数据结构-LeetCode 146 LRU 缓存机制精讲

闲谈

作为一名经验丰富的技术博客创作专家,我有幸向您介绍 LeetCode 146 中的 LRU 缓存机制。

LRU 缓存机制简介

LRU 缓存机制是一种高效的数据结构,用于在有限的容量内存储数据。LRU(Least Recently Used)意为最近最少使用,LRU 缓存机制的基本原理是将最近最少使用的数据淘汰出缓存,从而为新数据腾出空间。

LRU 缓存机制的实现

在 Python 中,可以使用 OrderedDict 类来实现 LRU 缓存机制。OrderedDict 是一种有序字典,它可以记住数据被插入的顺序。当缓存已满时,我们可以直接删除 OrderedDict 中最早插入的数据,以此来实现 LRU 缓存机制。

LeetCode 146 LRU 缓存机制的代码解析

LeetCode 146 题要求我们实现一个 LRU 缓存机制,该缓存机制的容量为 capacity。现在,让我们一起来剖析一下代码是如何实现 LRU 缓存机制的:

class LRUCache:
    def __init__(self, capacity: int):
        self.capacity = capacity
        self.cache = OrderedDict()

    def get(self, key: int) -> int:
        if key in self.cache:
            value = self.cache.pop(key)
            self.cache[key] = value
            return value
        else:
            return -1

    def put(self, key: int, value: int) -> None:
        if key in self.cache:
            self.cache.pop(key)
        self.cache[key] = value
        if len(self.cache) > self.capacity:
            self.cache.popitem(last=False)

在代码中,我们使用一个 OrderedDict 来存储缓存数据。在 __init__ 方法中,我们初始化了 LRU 缓存机制的容量并创建了一个 OrderedDict 来存储缓存数据。

get 方法中,我们首先检查 key 是否在缓存中。如果在,我们将该 key 对应的值从缓存中删除,然后重新插入该 key-value 对,以此来更新该 key 的访问时间。最后,我们将该 key 对应的值返回。

put 方法中,我们首先检查 key 是否在缓存中。如果在,我们将该 key 对应的值从缓存中删除。然后,我们将新的 key-value 对插入缓存中。如果缓存已满,我们将最早插入的数据从缓存中删除。

结语

在本文中,我们深入探讨了 LRU 缓存机制的概念、实现以及在 LeetCode 146 中的应用。通过深入剖析相关代码和示例,您应该对 LRU 缓存机制有一个更深入的理解,并能够轻松解决类似的编程问题。