PythonのスパイラルマトリックスII
正の整数nがあるとすると、スパイラル順序でn2個の要素を持つ正方行列を生成する必要があります。したがって、n =5の場合、行列は-
になります。1 | 2 | 3 | 4 |
12 | 13 | 14 | 5 |
11 | 16 | 15 | 6 |
10 | 9 | 8 | 7 |
手順を見てみましょう-
- set(row1、col1):=(0、0)and(row2、col2):=(n、n)、そしてresと呼ばれる1つの行列を作成し、それを0で埋め、num:=1<を設定します。 / li>
- while num <=n2、
- col1からcol2の範囲のiの場合、
- res [row1、i] =num、numを1の場合
- num> n2の場合、中断します
- 行1+1から行2の範囲のiの場合、
- res [i、col2-1] =num、numを1の場合
- num> n2の場合、中断します
- col2 –2からcol1–1までの範囲のiの場合
- res [row2 – 1、i] =num、numを1の場合
- num> n2の場合、中断します
- 行2〜2から行1までの範囲のiの場合
- res [i、col1] =num、numを1の場合
- row1を1増やし、row2を1減らし、col1を1増やし、col2を1減らします
- col1からcol2の範囲のiの場合、
- return res
理解を深めるために、次の実装を見てみましょう-
例
class Solution(object): def generateMatrix(self, n): row1 = 0 col1 = 0 row2 = n col2 = n result = [ [0 for i in range(n)] for j in range(n)] num = 1 while num<=n**2: for i in range(col1,col2): result[row1][i] = num num+=1 if num > n**2: break for i in range(row1+1,row2): result[i][col2-1] = num num+=1 if num > n**2: break for i in range(col2-2,col1-1,-1): result[row2-1][i] = num num+=1 if num > n**2: break for i in range(row2-2,row1,-1): result[i][col1] = num num+=1 row1+=1 row2-=1 col1+=1 col2-=1 #print(result) return result ob1 = Solution() print(ob1.generateMatrix(4))
入力
4
出力
[[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]]
-
PythonでMatrixを初期化する
この記事では、Python3.xで2次元リストを使用して行列を初期化する方法について学習します。またはそれ以前。 Python言語のみが提供するマトリックスを初期化する直感的な方法を見てみましょう。ここでは、リスト内包表記を利用します。内部リストを初期化し、リスト内包表記を使用して複数の行に拡張します。 例 # input the number of rows N = 3 # input the number of columns M = 3 # initializing the matrix res = [ [ i*j for i in range(N) ] for j in range(
-
Pythonで行列を転置しますか?
行列を転置するということは、その列をその行に変換することを意味します。転置後にどのように見えるかを例で理解しましょう。 -のような元の行列があるとします。 x = [[1,2][3,4][5,6]] 上記の行列「x」には、1、3、5と2、4、6を含む2つの列があります。 したがって、行列「x」の上に転置すると、列が行になります。したがって、上記のマトリックスの転置バージョンは次のようになります- x1 = [[1, 3, 5][2, 4, 6]] したがって、別のマトリックス「x1」があります。これは、さまざまな場所でさまざまな値を使用してさまざまに編成されています。 以下は、Pyt