Skip to content

Commit c197cf3

Browse files
joshua-dierickse-altiWolf22
authored andcommitted
Time: 2145 ms (17.83%) | Memory: 75.2 MB (30.82%) - LeetSync
Co-authored-by: Joshua Dierickse <joshua.dierickse@gmail.com>
1 parent 003998b commit c197cf3

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution:
2+
def findMaxForm(self, strs: List[str], m: int, n: int) -> int:
3+
# M[i][m][n] -> given the first i elements, m 0's, and n 1's, this is the max # of i elements we can fit
4+
5+
def count_01(s):
6+
zeros = 0
7+
ones = 0
8+
for c in s:
9+
if c == "0":
10+
zeros += 1
11+
else:
12+
ones += 1
13+
return (zeros, ones)
14+
15+
dp = [[[0] * (n + 1) for _ in range(m + 1)] for _ in range(len(strs) + 1)]
16+
17+
for i in range(1, len(strs) + 1):
18+
19+
zeros, ones = count_01(strs[i - 1])
20+
21+
for m_i in range(m + 1):
22+
for n_i in range(n + 1):
23+
if m_i - zeros >= 0 and n_i - ones >= 0:
24+
dp[i][m_i][n_i] = max(dp[i - 1][m_i][n_i], 1 + dp[i - 1][m_i - zeros][n_i - ones])
25+
else:
26+
dp[i][m_i][n_i] = dp[i - 1][m_i][n_i]
27+
28+
return dp[-1][-1][-1]
29+

0 commit comments

Comments
 (0)