Matrix Diagonal Summa i Java, C# och python

Matrix Diagonal Summa i Java, C# och python

Givet en kvadratisk matris returnerar du summan av matrisdiagonalerna.

Inkludera endast summan av alla element på den primära diagonalen och alla element på den sekundära diagonalen som inte är en del av den primära diagonalen.

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

Exempel 2:

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

Exempel 3:

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

Begränsningar:

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

Förklaring:

Diagonal från vänster till höger, värdet i är lika med värdet på j . mat[0,0],mat[1,1],mat[2,2] är alla diagonala element till vänster men vi behöver sammanfattningsvis diagonala element från höger till vänster så i det här fallet måste vi kontrollera värdena för i och j .

För element 3, 5 och 7, värdena för i, j är i=0,j=2 ,i=1,j=1 och i=2,j=0 , här är observationen i värdeökande och j värdet minskar. Vi använder rowS,colE dessa variabler i if condition och efter exekvering av den interna for-loopen ökar vi (rowS) och dekrementerar (colE).

Tidskomplexitet:

O(N 2 )

Behöver du hjälp?

Läs det här inlägget igen om du har någon förvirring, eller lägg till dina frågor i Community


No