54コイルマトリックス困難-LeetCode

経験:この質問は上下、配列の簡単な、境界の定義を作成する方法になります。

一方向の各サイクルは、決定されて、決意条件が微妙です!

その前に、私の判断条件は、その後、ノートの垂直および水平位置ひどく書かれてありますか

ラインは、同じであるか、または同じ列、行または列が増加して増加します。

1  クラスソリューション{
 2    公共一覧<整数> spiralOrder(INT [] []行列){リスト<整数>リスト= 新規のArrayList <> ();
3          であれば(マトリックス== NULL || matrix.length == 0 4              戻りリスト。
5            INTたrowNum = matrix.length。
6            INT colNum引数=行列[0 ] .LENGTH。
7           INTのトップ= 0、ボット=たrowNum-1、左= 0、右= colNum引数- 1 8              一方(はlist.size()!=たrowNum * colNum引数)
 9              {
 10                  のためにint型私は=左; iは=右<; iは++ 11                  {
 12                      list.add(行列[トップ] [I])。
13                  }
 14                  トップ++ 15                であれば(!はlist.size()=たrowNum * colNum引数)
 16                      のためのINT ; iは=ボットを<I ++はI =上面17                      {
 18                          list.add(行列[I] [右])。
19                      }
 20                  right-- 21             
22                   もし(はlist.size()!=たrowNum * colNum引数)
 23                         以下のためにint型私は右=; I> =左; i-- 24                          {
 25                              list.add(行列[ボット] [I])。
26                          }
 27                      bot-- 28                       であれば(!はlist.size()=たrowNum * colNum引数)
 29                              のためのINT ; I> =トップi-- I =ボット30                              {
 31                                  list.add(行列[I] [左])。
32                              }
 33                          ++左;     
34             }
 35              リターンリスト。
36          }
 37 }

 

おすすめ

転載: www.cnblogs.com/pc-m/p/11069098.html