Find column with maximum sum in a Matrix

14 Jun, 2022
Given a N*N matrix. The task is to find the index of column with maximum sum. That is the column whose sum of elements are maximum.Examples:  
Input : mat[][] = {
        { 1, 2, 3, 4, 5 },
        { 5, 3, 1, 4, 2 },
        { 5, 6, 7, 8, 9 },
        { 0, 6, 3, 4, 12 },
        { 9, 7, 12, 4, 3 },
    };
Output : Column 5 has max sum 31

Input : mat[][] = {
        { 1, 2, 3 },
        { 4, 2, 1 },
        { 5, 6, 7 },
    };
Output : Column 3 has max sum 11
 
The idea is to traverse the matrix column-wise and find the sum of elements in each column and check for every column if current sum is greater than the maximum sum obtained till the current column and update the maximum_sum accordingly. Below is the implementation of the above approach:  
C++
Java
Python3
C#
Javascript
// C++ program to find column with// max sum in a matrix#include <bits/stdc++.h>using namespace std; #define N 5 // No of rows and column // Function to find the column with max sumpair<int, int> colMaxSum(int mat[N][N]){    // Variable to store index of column    // with maximum    int idx = -1;     // Variable to store max sum    int maxSum = INT_MIN;     // Traverse matrix column wise    for (int i = 0; i < N; i++) {        int sum = 0;         // calculate sum of column        for (int j = 0; j < N; j++) {            sum += mat[j][i];        }         // Update maxSum if it is less than        // current sum        if (sum > maxSum) {            maxSum = sum;             // store index            idx = i;        }    }     pair<int, int> res;     res = make_pair(idx, maxSum);     // return result    return res;} // driver codeint main(){     int mat[N][N] = {        { 1, 2, 3, 4, 5 },        { 5, 3, 1, 4, 2 },        { 5, 6, 7, 8, 9 },        { 0, 6, 3, 4, 12 },        { 9, 7, 12, 4, 3 },    };     pair<int, int> ans = colMaxSum(mat);     cout << "Column " << ans.first + 1 << " has max sum "         << ans.second;     return 0;}
// Java program to find column// with max sum in a matriximport java.util.*; class GFG{// No of rows and columnstatic final int N = 5; // structure for pairstatic class Pair{    int first , second;         Pair(int f, int s)    {        first = f;        second = s;    }} // Function to find the column// with max sumstatic Pair colMaxSum(int mat[][]){    // Variable to store index of    // column with maximum    int idx = -1;     // Variable to store max sum    int maxSum = Integer.MIN_VALUE;     // Traverse matrix column wise    for (int i = 0; i < N; i++)    {        int sum = 0;         // calculate sum of column        for (int j = 0; j < N; j++)        {            sum += mat[j][i];        }         // Update maxSum if it is        // less than current sum        if (sum > maxSum)        {            maxSum = sum;             // store index            idx = i;        }    }     Pair res;     res = new Pair(idx, maxSum);     // return result    return res;} // Driver codepublic static void main(String args[]){    int mat[][] = { { 1, 2, 3, 4, 5 },                    { 5, 3, 1, 4, 2 },                    { 5, 6, 7, 8, 9 },                    { 0, 6, 3, 4, 12 },                    { 9, 7, 12, 4, 3 }};     Pair ans = colMaxSum(mat);     System.out.println("Column " + (int)(ans.first + 1) +                           " has max sum " + ans.second);}} // This code is contributed// by Arnab Kundu
# Python3 program to find column with# max Sum in a matrix N = 5 # Function to find the column with max Sumdef colMaxSum(mat):         # Variable to store index of column    # with maximum    idx = -1     # Variable to store max Sum    maxSum = -10**9     # Traverse matrix column wise    for i in range(N):         Sum = 0         # calculate Sum of column        for j in range(N):            Sum += mat[j][i]         # Update maxSum if it is less        # than current Sum        if (Sum > maxSum):            maxSum = Sum             # store index            idx = i             # return result    return idx, maxSum # Driver Code mat = [[ 1, 2, 3, 4, 5 ],       [ 5, 3, 1, 4, 2 ],       [ 5, 6, 7, 8, 9 ],       [ 0, 6, 3, 4, 12 ],       [ 9, 7, 12, 4, 3 ]] ans, ans0 = colMaxSum(mat) print("Column", ans + 1,         "has max Sum", ans0) # This code is contributed by# Mohit kumar 29
// C# program to find column// with max sum in a matrixusing System; class GFG{     // No of rows and columnstatic readonly int N = 5; // structure for pairpublic class Pair{    public int first , second;         public Pair(int f, int s)    {        first = f;        second = s;    }} // Function to find the column// with max sumstatic Pair colMaxSum(int [,]mat){    // Variable to store index of    // column with maximum    int idx = -1;     // Variable to store max sum    int maxSum = int.MinValue;     // Traverse matrix column wise    for (int i = 0; i < N; i++)    {        int sum = 0;         // calculate sum of column        for (int j = 0; j < N; j++)        {            sum += mat[j, i];        }         // Update maxSum if it is        // less than current sum        if (sum > maxSum)        {            maxSum = sum;             // store index            idx = i;        }    }     Pair res;     res = new Pair(idx, maxSum);     // return result    return res;} // Driver codepublic static void Main(String []args){    int [,]mat = { { 1, 2, 3, 4, 5 },                    { 5, 3, 1, 4, 2 },                    { 5, 6, 7, 8, 9 },                    { 0, 6, 3, 4, 12 },                    { 9, 7, 12, 4, 3 }};     Pair ans = colMaxSum(mat);     Console.WriteLine("Column " + (int)(ans.first + 1) +                        " has max sum " + ans.second);}} // This code has been contributed by 29AjayKumar
<script>// Javascript program to find column// with max sum in a matrix // No of rows and columnlet N = 5; // Function to find the column// with max sumfunction colMaxSum(mat){    // Variable to store index of    // column with maximum    let idx = -1;       // Variable to store max sum    let maxSum = Number.MIN_VALUE;       // Traverse matrix column wise    for (let i = 0; i < N; i++)    {        let sum = 0;           // calculate sum of column        for (let j = 0; j < N; j++)        {            sum += mat[j][i];        }           // Update maxSum if it is        // less than current sum        if (sum > maxSum)        {            maxSum = sum;               // store index            idx = i;        }    }       let res;       res = [idx, maxSum];       // return result    return res;} // Driver codelet mat = [[ 1, 2, 3, 4, 5 ],       [ 5, 3, 1, 4, 2 ],       [ 5, 6, 7, 8, 9 ],       [ 0, 6, 3, 4, 12 ],       [ 9, 7, 12, 4, 3 ]];        let ans = colMaxSum(mat);document.write("Column " + (ans[0] + 1) +                           " has max sum " + ans[1]);  // This code is contributed by unknown2108</script>
Column 5 has max sum 31
 
Time Complexity : O(N*N) where N is size of each row or column in matrix.
Auxiliary Space : O(1)
andrew1234
mohit kumar 29
29AjayKumar
unknown2108
aditya942003patil
Traversal
Matrix
Matrix
Traversal
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Rotate a matrix by 90 degree in clockwise direction without using any extra space
The Celebrity Problem
Unique paths in a Grid with Obstacles
Traverse a given Matrix using Recursion
Count all possible paths from top left to bottom right of a mXn matrix
Inplace rotate square matrix by 90 degrees | Set 1
Printing all solutions in N-Queen Problem
Maximum size rectangle binary sub-matrix with all 1s
Python program to multiply two matrices
Real-time application of Data Structures