Matrix Diagonal Sum i Java, C# og python

 C Programming >> C C# Program >  >> C
Matrix Diagonal Sum i Java, C# og python

Gitt en kvadratisk matrise, returner summen av matrisediagonalene.

Inkluder bare summen av alle elementene på den primære diagonalen og alle elementene på den sekundære diagonalen som ikke er en del av den primære diagonalen.

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

Begrensninger:

  • 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 til høyre, verdien i er lik verdien av j . mat[0,0],mat[1,1],mat[2,2] er alle venstre diagonale element, men vi i sum trenger vi diagonalt element fra høyre til venstre, så i dette tilfellet må vi sjekke verdiene til i og j .

For elementene 3, 5 og 7, verdiene i, j er i=0,j=2 ,i=1,j=1 og i=2,j=0 , her er observasjonen i verdiøkende og j verdien synker. Vi bruker rowS,colE disse variablene i if condition og etter utførelse av den interne for-løkken øker vi(rowS) og dekrementerer(colE).

Tidskompleksitet:

O(N 2 )

Trenger du hjelp?

Les dette innlegget igjen, hvis du har noen forvirring, eller legg til spørsmålene dine i fellesskapet


No