Leetcode 54. らせん行列java
2488 ワード
m x n個の要素を含むマトリクス(m行、n列)を指定します.マトリクス内のすべての要素を時計回りの螺旋順に返します.
例1:
例2:
例1:
:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
: [1,2,3,6,9,8,7,4,5]
例2:
:
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10,11,12]
]
: [1,2,3,4,8,12,11,10,9,5,6,7]
/*
: ,
boolean false
1 ,
, https://www.2cto.com/kf/201507/418663.html
*/
class Solution {
public List spiralOrder(int[][] matrix) {
List result = new ArrayList();
int i = 0 , j =0 ;
int row ,column ;
if(matrix.length == 0)
{
return result ;
}
row = matrix.length ;
column = matrix[0].length ;
boolean[][] a = new boolean[row][column] ;
int direct = 0 ; // 0 ,1 ,2,3
while(i>=0&&i=0)
{
if(a[i][j])
{
break ; //
}
result.add(matrix[i][j]) ;
a[i][j] = true ;
switch(direct)
{
case 0 :
if(j==column-1||a[i][j+1])
{
i++;// ,
direct=1 ; //
}
else
j++;//
break ;
case 1 :
if(i == row-1 ||a[i+1][j])
{
j--;//
direct=2 ; //
}
else
i++ ; //
break ;
case 2 :
if(j==0||a[i][j-1])
{
i-- ;//
direct=3 ;
}
else
j-- ; //
break ;
case 3 :
if(i==0||a[i-1][j])
{
j++ ; //
direct=0 ;
}
else
i--; //
break ;
}
}
return result ;
}
}