Ones and Zeroes
Problem
You are given an array of binary strings strs and two integers m and n.
Return the size of the largest subset of strs such that there are at most m 0's and n 1's in the subset.
A set x is a subset of a set y if all elements of x are also elements of y.
Solution Approach
Expected Time complexity:
Click - to see solution code
- C++
class Solution {
   public:
    int findMaxForm(vector<string>& strs, int m, int n) {
        int siz = strs.size();
        vector<vector<int>> ans(m + 1, vector<int>(n + 1));
        for (auto i : strs) {
            int cnt1 = 0, cnt2 = 0;
            cnt1 = count(i.begin(), i.end(), '1');
            cnt2 = i.length() - cnt1;
            for (int j = m; j >= cnt2; j--) {
                for (int k = n; k >= cnt1; k--) {
                    ans[j][k] = max(ans[j][k], ans[j - cnt2][k - cnt1] + 1);
                }
            }
        }
        return ans[m][n];
    }
};