Skip to content

Commit 8dd7bbc

Browse files
authored
Create find-all-possible-stable-binary-arrays-ii.py
1 parent 4beceed commit 8dd7bbc

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Time: O(n * m)
2+
# Space: O(n * m)
3+
4+
# dp
5+
class Solution(object):
6+
def numberOfStableArrays(self, zero, one, limit):
7+
"""
8+
:type zero: int
9+
:type one: int
10+
:type limit: int
11+
:rtype: int
12+
"""
13+
MOD = 10**9+7
14+
dp = [[[0]*2 for _ in xrange(one+1)] for _ in xrange(zero+1)]
15+
for i in xrange(zero+1):
16+
dp[i][0][0] = 1 if i <= limit else 0
17+
for j in xrange(one+1):
18+
dp[0][j][1] = 1 if j <= limit else 0
19+
for i in xrange(1, zero+1):
20+
for j in xrange(1, one+1):
21+
dp[i][j][0] = (dp[i-1][j][0]+dp[i-1][j][1])%MOD
22+
dp[i][j][1] = (dp[i][j-1][0]+dp[i][j-1][1])%MOD
23+
if i-limit-1 >= 0:
24+
dp[i][j][0] = (dp[i][j][0]-dp[i-limit-1][j][1])%MOD
25+
if j-limit-1 >= 0:
26+
dp[i][j][1] = (dp[i][j][1]-dp[i][j-limit-1][0])%MOD
27+
return (dp[-1][-1][0]+dp[-1][-1][1])%MOD

0 commit comments

Comments
 (0)