Matrix diagonaalsom in Java, C# en python

 C Programming >> C Programmeren >  >> C
Matrix diagonaalsom in Java, C# en python

Gegeven een vierkante matrix, retourneer de som van de matrixdiagonalen.

Neem alleen de som op van alle elementen op de primaire diagonaal en alle elementen op de secundaire diagonaal die geen deel uitmaken van de primaire diagonaal.

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

Voorbeeld 2:

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

Voorbeeld 3:

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

Beperkingen:

  • 06
  • 18
  • 20

Oplossing:

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

Uitleg:

Diagonaal van links naar rechts, de waarde van 37 is gelijk aan de waarde van 47 . mat[0,0],mat[1,1],mat[2,2] zijn allemaal een linker diagonaal element, maar we hebben in totaal een diagonaal element van rechts naar links nodig, dus in dit geval moeten we de waarden van 55 en 62 .

Voor elementen 3, 5 en 7 zijn de waarden van77 zijn 81 ,94 en 107 , hier is observatie 113 waarde verhogend en 126 waarde daalt. We gebruiken 134 deze variabelen in 144 en na uitvoering van de interne for-lus verhogen we (rijS) en verlagen we (colE).

Tijdcomplexiteit:

O(N 2 )

Hulp nodig?

Lees dit bericht opnieuw, als je enige verwarring hebt, of voeg je vragen toe aan de community


No