【LeetCode] 59.スパイラルマトリックスII

二つの螺旋状の行列。タイトルに番号n、要求のn×n行列の出力を与えるように意図され、nはn桁の左右に充填されています。同じタイトルを埋めるために54個の方法。例、

例:

入力:3 
出力
 [ [1、2、3]、
 [8]、[9,4]、
 [7,6]、[5] 
]

問題54個の質問の練習はほぼ同じです。充填する境界行と列の動きを見つけることによって達成されます。まず、JSおよびゼロで充填してn×nの二次元配列を作成します。トラバーサル時間、また右にしたがって-下-左-の順に。

時間O(N)

スペースはO(n ^ 2)

1  / * *
 2  * @param {数} N
 3  * @return {数[] []}
 4   * / 
5  VAR generateMatrix = 関数(N){
 6つの      LETのRES =アレイ(N).fill(0).MAP (()=>アレイ(N).fill(0 ))。
図7は、      rowBegin = 0ましょう8      rowEndを聞かせ= N - 1 図9は、      colBegin = 0ましょう図10は、      colEndを聞かせ= N - 1 11      LETのNUM = 1 12  
13      ながら(rowBegin <= rowEnd && colBegin <= colEnd){
 14          //
15          のための(iはcolBegin =せ; I <= colEnd; I ++ ){
 16の              RES [rowBegin] [I] = NUM ++ 17          }
 18          rowBegin ++ 19  
20          // ダウン
21          のための(iはrowBegin =せ; I <= rowEnd; I ++ ){
 22の              RES [I] [colEnd] = NUM ++ 23          }
 24          colEnd-- 25  
26          //は
27          (; I> = colBeginと、iはcolEnd =せi-- ){
 28の              RESを[rowEnd] [I] = NUM ++;
29          }
 30          rowEnd-- 31  
32          // 最大
33          のための(iはrowEnd =せ; I> = rowBegin; i-- ){
 34の              RES [I] [colBegin] = NUM ++ 35          }
 36          colBegin ++ 37      }
 38      リターンRES。
39 }。

 

おすすめ

転載: www.cnblogs.com/aaronliu1991/p/12306149.html