今日のトピックは、LeetCodeブラシ59個の質問であるhttps://leetcode-cn.com/problems/spiral-matrix-ii/、問題があることが必要です。
正の整数所与 N-を生成するために、1を含む、 N- 2のすべての要素、および要素は螺旋状に時計回りに次の正方行列に配置されています。例えば:
入力:3 出力: [ [1、2、3]、 [8,9、4]、 [7、6、5] ]
ループは、特に、以下ながらこのコードは、私が使用する、また非常に良い書き込みでは単純です。
パブリック クラスGenerateMatrix_59_middle { 公共 静的 ボイドメイン(文字列[]引数){ (生成 5。); } パブリック 静的 intは([] []を生成INT {N-) 値int [] []結果は= 新しい新しい INT [N-] [N-]。// 出力最終結果 ブール [] [] = hasNumber 新しい新しい ブール [N-] [N-]; //があるか否かを判定する。この位置なら要素 INT I = 1 ; INT X = 0 ; int型 Y = 0 ; 一方(私は<= N *N){ 場合(hasNumber [X] [Y] == 偽){ 結果[X] [Y] = I。 hasNumber [X] [Y]は = 真。 I ++ ; } 他{ 場合(Y + 1 <N && hasNumber [X] [Y + 1] == 偽)Y = Y + 1 。 そう であれば(X + 1 <N && hasNumber [X] [Y + 1] == 偽)、X = X + 1 。 そう であれば(Y-1> = 0 && hasNumber [X] [Y + 1] == 偽)Y = Y-1 。 それ以外の 場合(X-1> = 0 && hasNumber [X] [Y + 1] == 偽)のx = xで-1 。 結果[X] [Y] = I。 hasNumber [X] [Y]は = 真。 I ++ ; } 一方、(Y + 1 <N && hasNumber [X] [Y + 1] == 偽){ Y = Y + 1 。 結果[X] [Y] = I。 hasNumber [X] [Y]は = 真。 I ++ ; } 一方、(X + 1 <N && hasNumber [X + 1] [Y] == 偽){ X = X + 1 。 結果[X] [Y] = I。 hasNumber [X] [Y]は = 真。 I ++ ; } 一方、(Y-1> = 0 && hasNumber [X] [Y-1] == 偽){ Y = Y-1 。 結果[X] [Y] = I。 hasNumber [X] [Y]は = 真。 I ++ ; } 一方、(X-1> = 0 && hasNumber [X-1] [Y] == 偽){ Xの =のX-1。 結果[X] [Y] = I。 hasNumber [X] [Y]は = 真。 I ++ ; } } のための(INT J = 0であり、j <N; J ++ ){ ための(int型のk = 0、N <Kあり、k ++ ){ System.out.print(結果[J] [K] + "---" ); } のSystem.out.println(); } 戻り値の 結果; } }