Matrix Diagonal Sum in C++
In this tutorial, we will be writing a program to calculate sum of the diagonal elements of a matrix in C++.
Diagonal Matrix Sum in C++
This question was a part of the Leetcode Biweekly contest #34 on September 5 2020. I will be solving this algorithmic problem in this tutorial.
Our approach is pretty simple. We traverse through the matrix and at each step we take a decision if the element falls in a diagonal.
We see that the constraints say that our matrix may have at most 100 elements. In that case, performing 10000 operations isn’t really time-consuming. Hence our approach will suitably satisfy the test cases appropriately.
Explanation:
Given a 2D array, let’s say
1 2 5
6 9 10
100 9 0
In this case our solution would be to compute the primary and the secondary diagonal in the matrix.
The solution can be calculated as 1+9+0 + 5 + 9 + 100 = 124
The output of the following code will be
124
Take
1 1 1
1 1 1
1 1 1
In this case our answer would be
6
While traversing we need to check if an element is in the principal diagonal. This can be easily checked by seeing if the indices i and j are the same.
On the other hand the elements that fall in the secondary diagonal can be checked by i== size(mat) -i -1.
The code implementation is as follows:
#include<bits/stdc++.h> using namespace std; int myfunc(vector<vector<int>> & mat){ int result=0; for (int i=0 ; i<mat.size(); i++){ for(int j=0; j<mat.size(); j++){ if(i==j or j==mat.size()-i-1) result+=mat[i][j]; } } return result; } int main(){ int n; cin>>n; vector<vector<int>>mine; for(int i=0; i<n; i++){ vector<int>a; for(int j=0; j<n; j++){ int num; cin>>num; a.push_back(num); } mine.push_back(a); } /* for (auto g: mine){ for(auto o: g){ cout<<o<<" "; } cout<<endl; } */ int result= myfunc(mine); cout<<result; return 0; }
Leave a Reply