Algorithm
Find All Possible Stable Binary Arrays II
Solution
class Solution:
def numberOfStableArrays(self, zero: int, one: int, limit: int) -> int:
mod = 10**9 + 7
dp = [[[0, 0] for _ in range(one + 1)] for _ in range(zero + 1)]
for i in range(zero + 1):
for j in range(one + 1):
for lastBit in range(2):
if i == 0:
if lastBit == 0 or j > limit: dp[i][j][lastBit] = 0
else: dp[i][j][lastBit] = 1
elif j == 0:
if lastBit == 1 or i > limit: dp[i][j][lastBit] = 0
else: dp[i][j][lastBit] = 1
elif lastBit == 0:
dp[i][j][lastBit] = (dp[i - 1][j][0] + dp[i - 1][j][1]) % mod
if i > limit:
dp[i][j][lastBit] = (dp[i][j][lastBit] - dp[i - 1 - limit][j][1] + mod) % mod
else:
dp[i][j][lastBit] = (dp[i][j - 1][0] + dp[i][j - 1][1]) % mod
if j > limit:
dp[i][j][lastBit] = (dp[i][j][lastBit] - dp[i][j - 1 - limit][0] + mod) % mod
return (dp[zero][one][0] + dp[zero][one][1]) % modVideo GuideLeetcode Daily
Time Complexity
O(zero × one)
Space Complexity
O(zero × one)
