Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
JavaScript Program for Counting sets of 1s and 0s in a binary matrix
Counting sets of 1s and 0s in a binary matrix can be achieved using nested for loops with conditional statements. A binary matrix is a matrix that consists of only two digits: 1 and 0.
In this article, we will write a JavaScript program for counting the sets of 1s and 0s in a given binary matrix by counting non-empty subsets in each row and column.
Understanding the Formula
For any set with n elements, the total number of non-empty subsets is 2^n - 1.
Let us consider a set {a, b} having 2 elements (n = 2).
Total subsets: 2^2 = 4 ? {}, {a}, {b}, {a,b}
Non-empty subsets: 2^2 - 1 = 3 ? {a}, {b}, {a,b}
Example Walkthrough
Input: arr = [[1, 0, 1], [0, 1, 0]] Row 1: [1, 0, 1] ? ones = 2, zeroes = 1 Non-empty subsets of 1s: 2^2 - 1 = 3 Non-empty subsets of 0s: 2^1 - 1 = 1 Row 1 total: 3 + 1 = 4 Row 2: [0, 1, 0] ? ones = 1, zeroes = 2 Row 2 total: (2^1 - 1) + (2^2 - 1) = 1 + 3 = 4 Column 1: [1, 0] ? ones = 1, zeroes = 1 Column 1 total: (2^1 - 1) + (2^1 - 1) = 1 + 1 = 2 Column 2 total: 2, Column 3 total: 2 Sum: 4 + 4 + 2 + 2 + 2 = 14 Remove duplicates: 14 - (2 × 3) = 8 Output: 8
Algorithm Steps
- Initialize a result variable to store the final count
- For each row, count 1s and 0s, then calculate non-empty subsets using 2^count - 1
- For each column, count 1s and 0s, then calculate non-empty subsets
- Subtract rows × columns to remove duplicate counting of individual elements
- Return the final count
JavaScript Implementation
let arr = [[1, 0, 1], [0, 1, 0]];
let rows = 2;
let cols = 3;
function countBinaryMatrixSets(matrix) {
let totalSets = 0;
// Count sets in each row
for (let i = 0; i
Binary matrix: [ [ 1, 0, 1 ], [ 0, 1, 0 ] ]
Total sets of 1s and 0s: 8
Testing with Different Matrix
let matrix2 = [[1, 1], [0, 0]];
let rows2 = 2, cols2 = 2;
function countSets(matrix, r, c) {
let totalSets = 0;
// Process rows
for (let i = 0; i
Matrix: [ [ 1, 1 ], [ 0, 0 ] ]
Result: 6
Time and Space Complexity
| Complexity | Value | Explanation |
|---|---|---|
| Time | O(m × n) | We traverse the matrix twice |
| Space | O(1) | Only variables for counting |
Conclusion
This algorithm efficiently counts all possible non-empty sets of 1s and 0s in a binary matrix by processing rows and columns separately. The key insight is using the formula 2^n - 1 for non-empty subsets and removing duplicates by subtracting the matrix dimensions.
Advertisements
