How to Print Rows and Columns with max number of ” 1’s ” in Java
In this tutorial, we will print Rows and Columns with max number of ” 1’s ” in Java.
Java Problem: First generate a random 2 D matrix of 0’s and 1’s .then print the rows in which the number of 1’s is maximum. Then print the column index in which there is a maximum number of 1’s in Java.
Print Rows and Columns with max number of ” 1’s ” in Java
Hint: we can use ArrayList for storing the index
Solution: Steps we took to solve this problem
1. Generate the random 2d array
2. Size of the array is increased by one number to store the count of 1’s in that particular row and column.
for an eg. matrix of 0’s and 1’s of size n with the number of 1’s in respective row and column
1 0 1 2
1 0 1 2
1 0 0 1
3 0 2
3. Create an ArrayList, compare every element of the last row /the last column if an element of the array is found greater than row max then change row max, clear the array list and add the recent index to it.
4. Print the array list
here is code for same:-
import java.util.ArrayList;
import java.util.Scanner;
public class array {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("Enter the size of matrix");
int n = s.nextInt();
int arr[][] = new int[n + 1][n + 1]; //declaring array with extra column snd row
for (int i = 0; i < n; i++) { //generation of random array of '0' & '1'
for (int j = 0; j < n; j++)
arr[i][j] = (int) Math.round(Math.random());
}
for (int i = 0; i < n; i++) { //print the obtained random matrix
for (int j = 0; j < n; j++)
System.out.print(arr[i][j] + " ");
System.out.println();
}
largestRow(arr,n);
largestCol(arr,n);
}
static void largestRow(int[][] arr,int n) { // function of finding largest in row
ArrayList<Integer> arr1 = new ArrayList<Integer>();
for (int i = 0; i < n; i++) {
int count = 0;
for (int j = 0; j < n; j++) {
if (arr[i][j] == 1) //counting number of 1s in row
count++;
}
arr[i][n] = count; //storing the count in last column
}
int row_max = arr[0][n];
for (int i = 0; i < n; i++) {
if (arr[i][n] > row_max) { //if array element found greater than row max then clear array list
arr1.clear();
row_max = arr[i][n]; //update the row max
}
if (arr[i][n] == row_max) //if row element is equal to row max store the index in array list
arr1.add(i);
}
System.out.print("rows with max 1s: ");
for (int i = 0; i < arr1.size(); i++) //print array list storing row index
System.out.print(arr1.get(i) + " ");
System.out.println();
}
static void largestCol(int [][]arr,int n) {
ArrayList<Integer> arr1 = new ArrayList<Integer>();
for (int i = 0; i < n; i++) { //will count all '1s' in the coloumn
int count = 0;
for (int j = 0; j < n; j++) {
if (arr[j][i] == 1)
count++;
}
arr[n][i] = count; //will store it in the last row
}
int col_max = arr[n][0];
for (int i = 0; i < n; i++) {
if (arr[n][i] > col_max) { // compare all last row elemnt for max if found
arr1.clear(); //clear the previous data
col_max = arr[n][i]; //update column max
}
if (arr[n][i] ==col_max)
arr1.add(i); //if array elemnt equal column max store the index in array list
}
System.out.print("columns with max 1s: ");
for (int i = 0; i < arr1.size(); i++) //printing the arraylist storing column index
System.out.print(arr1.get(i) + " ");
}
}
Output:
Enter the size of matrix 4 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 rows with max 1s: 1 3 columns with max 1s: 3
Hope you understand the code.
Learn:
Leave a Reply