Ones and Zeroes
Thoughts
Code
class Solution {
public int findMaxForm(String[] strs, int m, int n) {
int len = strs.length;
int[][][] f = new int[len + 1][m + 1][n + 1];
int[][] s = new int[strs.length + 1][2];
for (int i = 0; i < len; i++) {
int sum0 = 0;
int sum1 = 0;
for (int j = 0; j < strs[i].length(); j++) {
if (strs[i].charAt(j) == '0') {
sum0++;
} else {
sum1++;
}
}
s[i + 1][0] = sum0;
s[i + 1][1] = sum1;
}
for (int i = 1; i <= len; i++) {
for (int j = 0; j <= m; j++) {
for (int k = 0; k <= n; k++) {
f[i][j][k] = f[i - 1][j][k];
if (j >= s[i][0] && k >= s[i][1]) {
f[i][j][k] = Math.max(f[i - 1][j][k], f[i - 1][j - s[i][0]][k - s[i][1]] + 1);
}
//System.out.println(i + ", " + j + ", " + k + ": " + f[i][j][k]);
}
}
}
return f[len][m][n];
}
}Analysis
Ver.2
Last updated