101 Logo
onenoughtone

Problem Statement

Ones and Zeroes

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.

Examples

Example 1:

Input: strs = ["10", "0001", "111001", "1", "0"], m = 5, n = 3
Output: 4
Explanation: The largest subset with at most 5 0's and 3 1's is {"10", "0001", "1", "0"}, so the answer is 4. Other valid but smaller subsets include {"0001", "1"} and {"10", "1", "0"}. {"111001"} is an invalid subset because it contains 4 1's, greater than the maximum of 3.

Example 2:

Input: strs = ["10", "0", "1"], m = 1, n = 1
Output: 2
Explanation: The largest subset is {"0", "1"}, so the answer is 2.

Constraints

  • 1 <= strs.length <= 600
  • 1 <= strs[i].length <= 100
  • strs[i] consists only of digits '0' and '1'
  • 1 <= m, n <= 100

Problem Breakdown

To solve this problem, we need to:

  1. This problem is a variation of the 0/1 Knapsack problem with two constraints: the number of 0's and the number of 1's.
  2. We can use dynamic programming to solve this problem, where the state is defined by the number of 0's and 1's we have used so far.
  3. For each string, we have two options: include it in our subset or exclude it.
  4. We need to keep track of the maximum subset size for each possible combination of 0's and 1's.
ProblemSolutionCode
101 Logo
onenoughtone