- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Find Column Which is Having Maximum 0’s in a Binary Matrix in Java
In Java, Array is an object. It is a non-primitive data type which stores values of similar data type. The matrix in java is nothing but a multi-dimensional array which represents multiple rows and columns.
A binary matrix is a matrix of 0s and 1s, where each element can only be one of two possible values.
Here we have given a binary matrix which contains set of binary elements and as per the problem statement we have to find the column which is having maximum number of 0’s.
Let’s start!
To show you some instances
Instance-1
Given binary matrix =
1 1 0 0 0 1 0 1 0 0 1 1 1 1 1 1
The column(s) with the maximum number of zeros is/are: 1 and 3
Instance-2
Given binary matrix =
0 0 1 1 1 1 0 1 0 0 0 0 0 1 1 0 1 1 1 0 0 1 0 0 1
The column(s) with the maximum number of zeros is/are: 1
Instance-3
Given binary matrix =
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
The column(s) with the maximum number of zeros is/are: No such column present
Algorithm
Algorithm-1: (By Using Nested for Loops)
Step-1 − The program initializes a binary matrix and two variables to store the maximum zero count and its corresponding column index.
Step-2 − It then loops through each column of the matrix and counts the number of zeros in that column.
Step-3 − It updates the maximum zero count and its corresponding column index if the current column has more zeros.
Step-4 − Finally, it prints the column(s) with the maximum number of zeros or "The given matrix does not contain any zeros" if there are no zeros in the matrix.
Algorithm-2: (By Using Java Streams)
Step-1 − The program initializes a binary matrix and two variables to store the maximum zero count and its corresponding column index.
Step-2 − It then loops through each column of the matrix and uses a Java Stream to count the number of zeros in that column.
Step-3 − It updates the maximum zero count and its corresponding column index if the current column has more zeros.
Step-4 − Finally, it prints the column(s) with the maximum number of zeros or "The given matrix does not contain any zeros" if there are no zeros in the matrix.
Step-5 − Java Streams provide a functional programming approach for processing data and can significantly reduce the code required to perform complex operations on collections of data.
Syntax
The Matrix.length() method in Java returns the length of the given matrix.
Below refers to the syntax of it −
inputMatrix.lenght
where, ‘inputMatrix’ refers to the given matrix.
Arrays.stream(matrix) converts the two-dimensional integer array matrix into a stream of arrays, where each array in the stream represents a row in the matrix.
Arrays.stream(matrix)
.mapToInt(row -> row[column]) maps each array (row) in the stream to an integer value corresponding to the element at the specified column index.
.mapToInt(row -> row[column])
Multiple Approaches
We have provided the solution in different approaches.
By Using Nested for Loops
By Using Java Stream
Let’s see the program along with its output one by one.
Approach-1: By Using Nested for Loop
In this approach, binary matrix elements will be initialized in the program. Then calls a user defined method by passing the matrix as parameter and inside method as per the algorithm-1 using nested for loop calculate the column which is having maximum number of 0’s in the given binary matrix.
Example
public class Main { public static void main(String[] args) { // Create a binary matrix int[][] matrix = {{1, 0, 1, 0}, {0, 1, 0, 1}, {1, 0, 0, 0}, {0, 1, 1, 0}}; // Initialize variables to store the maximum zero count and its corresponding column index int maxZeroCount = -1; int maxZeroColumn = -1; // Loop through each column of the matrix and count the number of zeros in that column for (int j = 0; j < matrix[0].length; j++) { int zeroCount = 0; for (int[] row : matrix) { if (row[j] == 0) { zeroCount++; } } // Update the maximum zero count and its corresponding column index if the current column has more zeros if (zeroCount > maxZeroCount) { maxZeroCount = zeroCount; maxZeroColumn = j; } } // Print the result if (maxZeroCount == 0) { System.out.println("The given matrix does not contain any zeros."); } else { System.out.print("The column(s) with the maximum number of zeros is/are: "); for (int j = 0; j < matrix[0].length; j++) { int zeroCount = 0; for (int[] row : matrix) { if (row[j] == 0) { zeroCount++; } } if (zeroCount == maxZeroCount) { System.out.print(j + " "); } } } } }
Output
The column(s) with the maximum number of zeros is/are: 3
Approach-2: By Using Java Stream
In this approach, binary matrix elements will be initialized in the program. Then calls a user defined method by passing the matrix as parameter and inside method as per the algorithm-2 using java streams calculate the column which is having maximum number of 0’s in the given binary matrix.
Example
import java.util.Arrays; public class Main { public static void main(String[] args) { // Create a binary matrix int[][] matrix = {{1, 0, 0, 0}, {0, 1, 0, 1}, {1, 0, 0, 0}, {0, 1, 1, 0}}; // Initialize variables to store the maximum zero count and its corresponding column index int maxZeroCount = -1; int maxZeroColumn = -1; // Loop through each column of the matrix and count the number of zeros in that column using a lambda expression for (int j = 0; j < matrix[0].length; j++) { final int column = j; // Make a copy of j to use inside the lambda expression int zeroCount = (int) Arrays.stream(matrix) .mapToInt(row -> row[column]) .filter(value -> value == 0) .count(); // Update the maximum zero count and its corresponding column index if the current column has more zeros if (zeroCount > maxZeroCount) { maxZeroCount = zeroCount; maxZeroColumn = j; } } // Print the result if (maxZeroCount == 0) { System.out.println("The given matrix does not contain any zeros."); } else { System.out.print("The column(s) with the maximum number of zeros is/are: "); for (int j = 0; j < matrix[0].length; j++) { final int column = j; // Make a copy of j to use inside the lambda expression int zeroCount = (int) Arrays.stream(matrix) .mapToInt(row -> row[column]) .filter(value -> value == 0) .count(); if (zeroCount == maxZeroCount) { System.out.print(j + " "); } } } } }
Output
The column(s) with the maximum number of zeros is/are: 2 3
In this article, we explored different approaches to find the column which is having maximum number of 0’s in a binary matrix by using Java programming language.