Matrix Diagonal Sum i Java, C# og python

Matrix Diagonal Sum i Java, C# og python

Givet en kvadratisk matrix, returner summen af ​​matrixdiagonalerne.

Inkluder kun summen af ​​alle elementerne på den primære diagonal og alle de elementer på den sekundære diagonal, som ikke er en del af den primære diagonal.

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

Eksempel 2:

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

Eksempel 3:

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

Begrænsninger:

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

Løsning:

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

Forklaring:

Diagonal fra venstre mod højre, værdien af ​​i er lig med værdien af ​​j . mat[0,0],mat[1,1],mat[2,2] er alle venstre diagonale element, men vi har i summen brug for diagonale elementer fra højre til venstre, så i dette tilfælde skal vi kontrollere værdierne af i og j .

For elementer 3, 5 og 7 er værdierne i, j er i=0,j=2 ,i=1,j=1 og i=2,j=0 , her er observation i værdi stigende og j værdien er faldende. Vi bruger rowS,colE disse variabler i if condition og efter udførelse af den interne for-løkke stiger vi (rowS) og dekrementerer (colE).

Tidskompleksitet:

O(N 2 )

Har du brug for hjælp?

Læs dette indlæg igen, hvis du har nogen forvirring, eller tilføj dine spørgsmål til Fællesskabet


No