スポンサーリンク

【LeetCode】 1572. Matrix Diagonal Sum 解答・解説【Python】

スポンサーリンク
スポンサーリンク
この記事は約4分で読めます。

 

 

はじめに

LeetCodeの問題を解答します。

なるべく、問題の和訳と詳細なコメントを書いています。

余裕があれば、複数のアプローチの解答と、実際の面接を想定して英語での解法やコメントを書いています。

 

様々なカテゴリの問題をランダムにあたる方法も良いですが、

二分探索、連結リストなど、テーマを絞って集中的に解いた方が練習しやすい方は以下の記事が有用です。

テーマごとに問題を分類しました。

LeeetCodeの問題をアルゴリズムとデータ構造による分類しました。

 

また、LeetCodeではAtcoderと違ってクラスと関数を定義して解答します。

LeetCodeに特有の内容など、知っておくと役に立つかもしれないことをまとめています。

はじめてLeetCodeに触れる方はこちらの記事も役に立つと思います。

解答前に知っておくと役に立つかもしれない情報

 

 

ポイント

  • 配列内のインデックスの扱いに注意

 

この記事で得られること

  • 多重配列の扱い
  • 配列内のインデックス操作の練習

 

 

詳細

 

問題

 

原文

Given a square matrix mat, return the sum of the matrix diagonals.

Only include the sum of all the elements on the primary diagonal and all the elements on the secondary diagonal that are not part of the primary diagonal.

 

Example 1:

Example 2:

Example 3:

 

Constraints:

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

 

 

内容(和訳)

行列matが与えられるので、対角線上の要素の合計を返してください。

行列の中央の要素は2回加算されないようにしてください。

 

※正しくない可能性があります。

 

解答

 

解答1:Python

 

➀左上から右下と、②右上から左下の2つの対角線の合計を求めます。

各行をfor文で一巡しますが、各ループで列の位置を示すインデックスは、

➀の対角線は左から右に、②の対角線は右から左に動くように操作しています。

 

行列の数が奇数で、行数と列数が同じとき、行列の中央の要素は2つの対角線でそれぞれ加算されているので、2つの対角線を合計値から引いています。

 

 

 

終わりに

補足・参考・感想

 

問題を分類しました。テーマごとに集中して問題を解くことができます。

LeeetCodeの問題をアルゴリズムとデータ構造による分類

 

LeetCodeに特有の内容など、知っておくと役に立つかもしれないことをまとめました。

解答前に知っておくと役に立つかもしれない情報

 

 

疑問が解決した方は他の問題もどうぞ

前:1672. Richest Customer Wealth

次:206. Reverse Linked List

LeetCode 解答・解説記事一覧

 

コメント