概述:
LRU全称 least recently used,是一种内存管理算法,假设长期不被使用的数据,在数据占用达到内存的阙值时,最近最少使用的数据将被移除。
实例-1:
def test(n):print(f'计算{n}的阶乘')if n <= 1:return 1else:return n * test(n -1)test(5)print('-----------------')test(3)"""计算5的阶乘计算4的阶乘计算3的阶乘计算2的阶乘计算1的阶乘-----------------计算3的阶乘计算2的阶乘计算1的阶乘"""# 以上不使用LRU算法时,test(3)在计算test(5)的时候已经被计算了,test(3)的时候又计算了一边@functools.lru_cache()def test(n):print(f'计算{n}的阶乘')if n <= 1:return 1else:return n * test(n -1)test(5)print('-----------------')test(3)"""计算5的阶乘计算4的阶乘计算3的阶乘计算2的阶乘计算1的阶乘-----------------"""# 以上test(3)在计算test(5)的时候已经被计算了,所以直接拿了缓存的值,没有再次打印
leetcode算法题:爬楼梯
class Solution:@functools.lru_cache() # 缓存装饰器def climbStairs(self, n: int) -> int:if n == 1: return 1if n == 2: return 2return self.climbStairs(n-1) + self.climbStairs(n-2)# 时间复杂度是O(n),空间复杂度是O(n)
