思路:
上下左右设置四个边界
每走完一行或者一列,移动相应边界,当左边界大于右边界,或者上边界大于下边界时,结束
代码如下:
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
int t = 0 , b = matrix.length - 1, l = 0 , right = matrix[0].length - 1;
List<Integer> result = new ArrayList<Integer>();
while(true)
{
for(int i = l ; i <= right ; i++)
{
result.add(matrix[t][i]);
k++;
}
t++;
if(t > b)
break;
for(int i = t ; i <= b ; i++)
{
result.add(matrix[i][right]);
k++;
}
right--;
if(right < l)
break;
for(int i = right ; i >= l ; i--)
{
result.add(matrix[b][i]);
k++;
}
b--;
if(b < t)
break;
for(int i = b ; i >= t ; i--)
{
result.add(matrix[i][l]);
k++;
}
l++;
if(l > right)
break;
}
return result;
}
}