Medium
Given an m x n
matrix
, return all elements of the matrix
in spiral order.
Example 1:
Input: matrix = [[1,2,3],[4,5,6],[7,8,9]]
Output: [1,2,3,6,9,8,7,4,5]
Example 2:
Input: matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
Output: [1,2,3,4,8,12,11,10,9,5,6,7]
Constraints:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 10
-100 <= matrix[i][j] <= 100
using System.Collections.Generic;
public class Solution {
public IList<int> SpiralOrder(int[][] matrix) {
var res = new List<int>();
if (matrix == null || matrix.Length == 0) {
return res;
}
int m = matrix.Length;
int n = matrix[0].Length;
int top = 0;
int bottom = m - 1;
int left = 0;
int right = n - 1;
while (top <= bottom && left <= right) {
for (int j = left; j <= right; j++) {
res.Add(matrix[top][j]);
}
top++;
for (int i = top; i <= bottom; i++) {
res.Add(matrix[i][right]);
}
right--;
if (top <= bottom) {
for (int j = right; j >= left; j--) {
res.Add(matrix[bottom][j]);
}
bottom--;
}
if (left <= right) {
for (int i = bottom; i >= top; i--) {
res.Add(matrix[i][left]);
}
left++;
}
}
return res;
}
}