PHP Program to Efficiently compute sums of diagonals of a matrix
Last Updated :
22 Jul, 2024
Given a 2D square matrix, find the sum of elements in Principal and Secondary diagonals. For example, consider the following 4 X 4 input matrix.
A00 A01 A02 A03
A10 A11 A12 A13
A20 A21 A22 A23
A30 A31 A32 A33
The primary diagonal is formed by the elements A00, A11, A22, A33.
- Condition for Principal Diagonal: The row-column condition is row = column.
The secondary diagonal is formed by the elements A03, A12, A21, A30. - Condition for Secondary Diagonal: The row-column condition is row = numberOfRows - column -1.
Examples :
Input:
4
1 2 3 4
4 3 2 1
7 8 9 6
6 5 4 3
Output :
Principal Diagonal: 16
Secondary Diagonal: 20
Input :
3
1 1 1
1 1 1
1 1 1
Output :
Principal Diagonal: 3
Secondary Diagonal: 3
Method 1 - Native Approach(O(n ^ 2) ):
In this method, we use two loops i.e. a loop for columns and a loop for rows and in the inner loop we check for the condition stated above:
PHP
<?php
// A simple PHP program to
// find sum of diagonals
$MAX = 100;
function printDiagonalSums($mat, $n)
{
global $MAX;
$principal = 0;
$secondary = 0;
for ($i = 0; $i < $n; $i++)
{
for ($j = 0; $j < $n; $j++)
{
// Condition for
// principal diagonal
if ($i == $j)
$principal += $mat[$i][$j];
// Condition for
// secondary diagonal
if (($i + $j) == ($n - 1))
$secondary += $mat[$i][$j];
}
}
echo "Principal Diagonal:" ,
$principal ,"
";
echo "Secondary Diagonal:",
$secondary ,"
";
}
// Driver code
$a = array (array ( 1, 2, 3, 4 ),
array ( 5, 6, 7, 8 ),
array ( 1, 2, 3, 4 ),
array ( 5, 6, 7, 8 ));
printDiagonalSums($a, 4);
// This code is contributed by ajit
?>
OutputPrincipal Diagonal:18
Secondary Diagonal:18
Complexity Analysis:
- Time Complexity: O(N*N), as we are using a loop to traverse N*N times.
- Auxiliary Space: O(1), as we are not using any extra space.
Method 2 - Efficient Approach (O(n) ):
In this method we use one loop i.e. a loop for calculating sum of both the principal and secondary diagonals:
PHP
<?php
// An efficient PHP program
// to find sum of diagonals
$MAX = 100;
function printDiagonalSums($mat, $n)
{
global $MAX;
$principal = 0; $secondary = 0;
for ($i = 0; $i < $n; $i++)
{
$principal += $mat[$i][$i];
$secondary += $mat[$i][$n - $i - 1];
}
echo "Principal Diagonal:" ,
$principal ,"
";
echo "Secondary Diagonal:" ,
$secondary ,"
";
}
// Driver Code
$a = array(array(1, 2, 3, 4),
array(5, 6, 7, 8),
array(1, 2, 3, 4),
array(5, 6, 7, 8));
printDiagonalSums($a, 4);
// This code is contributed by aj_36
?>
OutputPrincipal Diagonal:18
Secondary Diagonal:18
Complexity Analysis:
- Time Complexity: O(N), as we are using a loop to traverse N times.
- Auxiliary Space: O(1), as we are not using any extra space.
Please refer complete article on Efficiently compute sums of diagonals of a matrix for more details!
Similar Reads
Javascript Program to Efficiently compute sums of diagonals of a matrix Given a 2D square matrix, find the sum of elements in Principal and Secondary diagonals. For example, consider the following 4 X 4 input matrix.A00 A01 A02 A03A10 A11 A12 A13A20 A21 A22 A23A30 A31 A32 A33The primary diagonal is formed by the elements A00, A11, A22, A33. Condition for Principal Diago
3 min read
Efficiently compute sums of diagonals of a matrix Given a 2D square matrix, find the sum of elements in Principal and Secondary diagonals. For example, consider the following 4 X 4 input matrix. A00 A01 A02 A03 A10 A11 A12 A13 A20 A21 A22 A23 A30 A31 A32 A33 The primary diagonal is formed by the elements A00, A11, A22, A33. Condition for Principal
10 min read
Create matrix whose sum of diagonals in each sub matrix is even Given a number N, the task is to create a square matrix of size N*N with values in range [1, N*N], such that the sum of each diagonal of an even sub-square matrix is even. Examples: Input: N = 3Output: 1 2 3 4 5 6 7 8 9 Explanation:For each even sub-square matrix the sum of each diagonal is a even n
5 min read
How to Calculate Determinant of a Matrix in PHP? Given a Matrix of size M*N, where N and M is an Integer, we need to Calculate calculate of a Matrix in PHP. Example: Input: [[1, 2],[2, 3]]Output: 6Explanation: (1*3)-(2*2)= 6-4= 2 There are several ways to find the determinant of the matrix in PHP which are as follows: Table of Content Using Recurs
4 min read
Find the sum of Eigen Values of the given N*N matrix Given an N*N matrix mat[][], the task is to find the sum of Eigen values of the given matrix.Examples: Input: mat[][] = { {2, -1, 0}, {-1, 2, -1}, {0, -1, 2}} Output: 6Input: mat[][] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}} Output: 34 Approach: The sum of Eigen values of a
10 min read