Somme diagonale matricielle en Java, C # et python

Somme diagonale matricielle en Java, C # et python

Étant donné une matrice carrée, renvoie la somme des diagonales de la matrice.

N'incluez que la somme de tous les éléments de la diagonale principale et de tous les éléments de la diagonale secondaire qui ne font pas partie de la diagonale principale.

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

Exemple 2 :

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

Exemple 3 :

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

Contraintes :

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

Solution :

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

Explication :

Diagonale de gauche à droite, la valeur de i est égal à la valeur de j . mat[0,0],mat[1,1],mat[2,2] sont tous des éléments en diagonale gauche mais en somme, nous avons besoin d'un élément diagonal de droite à gauche, donc dans ce cas, nous devons vérifier les valeurs de i et j .

Pour les éléments 3, 5 et 7, les valeurs de i, j sont i=0,j=2 ,i=1,j=1 et i=2,j=0 , ici l'observation est i valeur croissante et j la valeur diminue. Nous utilisons rowS,colE ces variables en if condition et après l'exécution de la boucle for interne, nous incrémentons (rowS) et décrémentons (colE).

Complexité temporelle :

O(N 2 )

Besoin d'aide ?

Relisez ce message, si vous avez une confusion, ou ajoutez vos questions à la communauté


No