0%

cachedecorator

简要介绍python的decorator:cache

先看一个经典题:https://leetcode.cn/problems/minimum-number-of-days-to-eat-n-oranges/description/

上来直接记忆化指数下降搜索得到代码:

1
2
3
4
5
6
7
8
9
ans = {
1:1,
# ...
}
def rec(n):
if n in ans.keys():
return ans[n]
else:
return min(n % 2 + rec(n // 2), n % 3 + rec(n // 3)) + 1

但这里其实不必手动记忆化,直接用python自带的@cache即可(LRU,比直接全部存储高明):

1
2
3
4
5
6
@cache
def rec(n):
if n <= 1:
return 1
else:
return min(n % 2 + rec(n // 2), n % 3 + rec(n // 3)) + 1

实测后者比前者快一些。

欢迎关注我的其它发布渠道