Matrix Diagonal Sum w Javie, C# i Pythonie

Matrix Diagonal Sum w Javie, C# i Pythonie

Mając macierz kwadratową, zwróć sumę przekątnych macierzy.

Uwzględnij tylko sumę wszystkich elementów na głównej przekątnej i wszystkich elementów na drugorzędnej przekątnej, które nie są częścią głównej przekątnej.

Przykład 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.

Przykład 2:

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

Przykład 3:

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

Ograniczenia:

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

Rozwiązanie:

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

Wyjaśnienie:

Przekątna od lewej do prawej, wartość i jest równa wartości j . mat[0,0],mat[1,1],mat[2,2] wszystkie są lewym elementem diagonalnym, ale w sumie potrzebujemy elementu diagonalnego od prawej do lewej, więc w tym przypadku musimy sprawdzić wartości i i j .

Dla elementów 3, 5 i 7 wartości i, j i=0,j=2 ,i=1,j=1 i i=2,j=0 , tutaj obserwacja to i zwiększanie wartości i j wartość maleje. Używamy rowS,colE te zmienne w if condition a po wykonaniu wewnętrznej pętli for inkrementujemy(rowS) i dekrementujemy(colE).

Złożoność czasowa:

O(N 2 ) )

Potrzebujesz pomocy?

Przeczytaj ten post ponownie, jeśli masz jakiekolwiek wątpliwości, lub dodaj swoje pytania do społeczności


No