Java、C#、および python での行列対角和

正方行列が与えられた場合、行列の対角線の合計を返します。

一次対角のすべての要素と、一次対角の一部ではない二次対角のすべての要素の合計のみを含めます。

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

例 2:

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

例 3:

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

制約:

  • 08
  • 10
  • 22

解決策:

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

説明:

左から右への斜め、39 の値 49 の値に等しい . mat[0,0]、mat[1,1]、mat[2,2] はすべて左対角要素ですが、合計すると右から左への対角要素が必要なので、この場合は 56 そして 64 .

要素 3、5、および 7 の場合、79 の値 83 です ,96109 、ここでの観察は 115 値の増加と 128 値が減少しています。 136 を使用しています 146 のこれらの変数 内部 for ループの実行後、インクリメント (rowS) とデクリメント (colE) が行われます。

時間の複雑さ:

O(N 2 )

ヘルプが必要ですか?

混乱がある場合は、この投稿をもう一度読むか、コミュニティに質問を追加してください


No