题目描述
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
示例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]
代码
public class Solution {
public IList<int> SpiralOrder(int[][] matrix) {
List<int> result = new List<int>();
if(matrix==null||matrix.Length==0)
return result;
int left=0;
int right=matrix[0].Length-1;
int top=0;
int bottom=matrix.Length-1;
while(result.Count < matrix.Length * matrix[0].Length)
{
for(int col = left; col <= right; col++)
result.Add(matrix[top][col]);
top++;
if(result.Count < matrix.Length * matrix[0].Length)
{
for(int row = top; row <= bottom; row++)
result.Add(matrix[row][right]);
right--;
}
if(result.Count < matrix.Length * matrix[0].Length)
{
for(int col = right; col >= left; col--)
result.Add(matrix[bottom][col]);
bottom--;
}
if(result.Count < matrix.Length * matrix[0].Length)
{
for(int row = bottom; row >= top; row--)
result.Add(matrix[row][left]);
left++;
}
}
return result;
}
}