Given a multi-dimensional 2D matrix of n rows and m column order N × M. The task is to find the maximum element in the given matrix.
Illustration:
Input : mat[][] = { {1,3,4,19}, {11,10,12,1}, {7,9,0,4,99} } Output : 99
Methods:
- Iterative method (naive approach)
- Using the principle of recursion (Bit more optimal approach)
Method 1: Iterative method
The approach is simple to iterate every element of the matrix one by one and store the maximum of two elements in the max variable as used below in the program and returns the max variable that contains the maximum element of the matrix.
Example
Java
// Java Program to Find the Maximum Element in a Matrix // Importing input output classes import java.io.*; // Main class class GFG { // Method 1 // To find the maximum element static int max( int mat[][]) { // Declaring and initializing variable to unity // holding the maximum element value int max = 0 ; // Iterating over matrix // using nested for loops // Outer loop for rows for ( int i = 0 ; i < mat.length; ++i) { // Inner loop for columns for ( int j = 0 ; j < mat[ 0 ].length; ++j) { // Storing the maximum element max = Math.max(mat[i][j], max); } } // Return the maximum element return max; } // Method 2 // Main driver method public static void main(String[] args) { // Custom input 2D matrix int mat[][] = { { 1 , 3 , 4 , 19 }, { 11 , 10 , 12 , 1 }, { 7 , 9 , 0 , 99 } }; // Calling the method 1 to get max element // and storing that integer element int max_element = max(mat); // Printing the maximum element System.out.println(max_element); } } |
99
Time Complexity: O(n2)
Auxiliary Space: O(1)
Method 2: Using the principle of recursion
Procedure:
- Recursively call every element of the matrix to the last element of the matrix.
- Return the max of the current element to the next recursive call element.
Example
Java
// Java Program to Find the Maximum Element in a Matrix // Using Recursion // Importing input output classes import java.io.*; // main class class GFG { // Method 1 // To find the max element static int max( int mat[][], int i, int j) { // Handling the base cases if (j == mat[ 0 ].length && i < mat.length) { // Changing the row and column index j = 0 ; ++i; } // Generic case if (i == mat.length) { // Simply return return 0 ; } // By far if we reach here then // return the max element return Math.max(mat[i][j], max(mat, i, j + 1 )); } // Method 2 // Main driver method public static void main(String[] args) { // Custom input 2D array int mat[][] = { { 1 , 3 , 4 , 19 }, { 11 , 10 , 12 , 1 }, { 7 , 9 , 0 , 99 } }; // Calling the method 1 that is recursive function to // find out maximum element int max_element = max(mat, 0 , 0 ); // Print and display the maximum element System.out.println(max_element); } } |
99
Time Complexity: O(n)
Auxiliary Space: O(n)