In this Diagonal Difference HackerRank Problem, Given a square matrix, calculate the absolute difference between the sums of its diagonals.
For example, the square matrix is shown below:
1 2 3
4 5 6
9 8 9
The left-to-right diagonal = . The right to left diagonal = . Their absolute difference is .
Function description
Complete the function in the editor below.
diagonalDifference takes the following parameter:
- int arr[n][m]: an array of integers
Return
- int: the absolute diagonal difference
Input Format
The first line contains a single integer, , the number of rows and columns in the square matrix .
Each of the next lines describes a row, , and consists of space-separated integers .
Constraints
Output Format
Return the absolute difference between the sums of the matrix’s two diagonals as a single integer.
Sample Input
3
11 2 4
4 5 6
10 8 -12
Sample Output
15
Explanation
The primary diagonal is:
11
5
-12
Sum across the primary diagonal: 11 + 5 – 12 = 4
The secondary diagonal is:
4
5
10
Sum across the secondary diagonal: 4 + 5 + 10 = 19
Difference: |4 – 19| = 15
Note: |x| is the absolute value of x
Diagonal Difference Hacker Rank Problem Solutions
I will Provide solution in Multiple programming languages for you. If you are not able to find the code in required language then please share in comments so that our team can help you.
Problem Solution in Python
def diagonalDifference(arr):
n = len(arr)-1
a = 0
b = 0
for i in range(len(arr)):
a+=arr[i][i]
b+=arr[i][n-i]
return abs(a-b)
Problem Solution in C++
int diagonalDifference(vector<vector<int>> arr) {
int num1=0;
int num2=0;
int n = arr.size();
int m = arr[0].size();
int index = 0;
int index2 = m-1;
for(int i = 0; i < n; i++) {
num1 += arr[i][index];
index++;
num2 += arr[i][index2];
index2--;
}
return abs(num1-num2);
}
Problem Solution in Java
public static int diagonalDifference(int n, List<List<Integer>> arr) {
int pdIdx = 0;
int sdIdx = n-1;
int primaryDiagonal = 0;
int secondaryDiagonal = 0;
while(sdIdx > -1)
{
primaryDiagonal += arr.get(pdIdx).get(pdIdx);
secondaryDiagonal += arr.get(pdIdx).get(sdIdx);
sdIdx--;
pdIdx++;
}
return Math.abs(primaryDiagonal-secondaryDiagonal);
}
Problem Solution in JavaScript
function diagonalDifference(arr) {
let diagonal1 = 0, diagonal2 = 0;
for (let i = 0; i < arr.length; i++) {
diagonal1 += arr[i][i];
diagonal2 += arr[i][arr.length - 1 - i];
}
return Math.abs(diagonal1 - diagonal2);
}