- 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**.**