LeetCode3130:找出所有稳定的二进制数组II

LeetCode3130

今天的题目与昨天的相同,除了数据量的区别,今天的必须要清理缓存,否则会爆内存。昨日题解传送门

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
posted @ 2026-03-10 13:30  冰雪聪明琪露诺  阅读(5)  评论(0)    收藏  举报