Matrix Diagonal Sum en Java, C# y python

Matrix Diagonal Sum en Java, C# y python

Dada una matriz cuadrada, devuelve la suma de las diagonales de la matriz.

Solo incluye la suma de todos los elementos de la diagonal principal y todos los elementos de la diagonal secundaria que no forman parte de la diagonal principal.

Ejemplo 1:

Input: mat = [[1,2,3],
              [4,5,6],
              [7,8,9]]
Output: 25
Explanation: Diagonals sum: 1 + 5 + 9 + 3 + 7 = 25
Notice that element mat[1][1] = 5 is counted only once.

Ejemplo 2:

Input: mat = [[1,1,1,1],
              [1,1,1,1],
              [1,1,1,1],
              [1,1,1,1]]
Output: 8

Ejemplo 3:

Input: mat = [[5]]
Output: 5

Restricciones:

  • n == mat.length == mat[i].length
  • 1 <= n <= 100
  • 1 <= mat[i][j] <= 100

Solución:

    public int DiagonalSum(int[][] mat) {
        int sum = 0;
            int rowS=0,colE=mat[0].Length-1;
            for (int i = 0; i < mat.Length; i++)
            {
                for (int j = 0; j < mat[i].Length; j++)
                {
                    if(i==j || (rowS==i && colE==j))
                    {
                        sum+=mat[i][j];
                    }
                }
                rowS++;
                colE--;
            }

            return sum;
    }

Explicación:

Diagonal de izquierda a derecha, el valor de i es igual al valor de j . mat[0,0],mat[1,1],mat[2,2] todos son elementos diagonales a la izquierda pero, en suma, necesitamos un elemento diagonal de derecha a izquierda, por lo que en este caso debemos verificar los valores de i y j .

Para los elementos 3, 5 y 7, los valores de i, j son i=0,j=2 ,i=1,j=1 y i=2,j=0 , aquí la observación es i valor creciente y j el valor es decreciente. Estamos usando rowS,colE estas variables en if condition y después de la ejecución del bucle for interno estamos incrementando (rowS) y decrementando (colE).

Complejidad de tiempo:

O(N 2 )

¿Necesitas ayuda?

Lea esta publicación nuevamente, si tiene alguna confusión, o agregue sus preguntas a la Comunidad


No