LeetCode3130:找出所有稳定的二进制数组II
今天的题目与昨天的相同,除了数据量的区别,今天的必须要清理缓存,否则会爆内存。昨日题解传送门
class Solution:
def numberOfStableArrays(self, zero: int, one: int, limit: int) -> int:
MOD=1_000_000_007
@cache
def dfs(i,j,k):
if i==0:
return 1 if j<=limit and k==1 else 0
if j==0:
return 1 if i<=limit and k==0 else 0
if k==0:
return (dfs(i-1,j,0)+dfs(i-1,j,1)-(dfs(i-limit-1,j,1) if i>limit else 0))%MOD
else:
return (dfs(i,j-1,0)+dfs(i,j-1,1)-(dfs(i,j-limit-1,0) if j>limit else 0))%MOD
ans=(dfs(zero,one,0)+dfs(zero,one,1))%MOD
# 清理缓存
dfs.cache_clear()
return ans

浙公网安备 33010602011771号