Matrix-Diagonalsumme in Java, C# und Python

Matrix-Diagonalsumme in Java, C# und Python

Geben Sie bei einer quadratischen Matrix die Summe der Matrixdiagonalen zurück.

Berücksichtigen Sie nur die Summe aller Elemente auf der primären Diagonale und aller Elemente auf der sekundären Diagonale, die nicht Teil der primären Diagonale sind.

Beispiel 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.

Beispiel 2:

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

Beispiel 3:

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

Einschränkungen:

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

Lösung:

    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;
    }

Erklärung :

Diagonal von links nach rechts, der Wert von i ist gleich dem Wert von j . mat[0,0],mat[1,1],mat[2,2] sind alle linke diagonale Elemente, aber wir brauchen insgesamt diagonale Elemente von rechts nach links, also müssen wir in diesem Fall die Werte von i und j .

Für die Elemente 3, 5 und 7 die Werte von i, j sind i=0,j=2 ,i=1,j=1 und i=2,j=0 , hier ist die Beobachtung i Werterhöhung und j Wert sinkt. Wir verwenden rowS,colE diese Variablen in if condition und nach Ausführung der internen for-Schleife inkrementieren wir (rowS) und dekrementieren (colE).

Zeitkomplexität:

O(N 2 )

Brauchen Sie Hilfe?

Lesen Sie diesen Beitrag erneut, wenn Sie Fragen haben, oder stellen Sie Ihre Fragen der Community


No