本题同原站
leetcode-cn.com/problems/sp…一样
代码如下
import java.util.Arrays;
/**
* 模拟
*
* l top
*
*
* b r
*
* Code by java
*/
class Solution {
public int[] spiralOrder(int[][] matrix) {
if (matrix.length == 0) {
return new int[0];
}
int l = 0, r = matrix[0].length - 1;
int top = 0, b = matrix.length - 1;
int[] ans = new int[(r + 1) * (b + 1)];
int x = 0; //用于维护结果数组
while(true) {
for(int i = l; i <= r; i++) {
ans[x++] = matrix[top][i]; //左上 到 右上
}
if(++top > b) break;
for(int i = top; i <= b; i++) {
ans[x++] = matrix[i][r]; //右上 到 右下
}
if(--r < l) break;
for(int i = r; i >= l; i--) {
ans[x++] = matrix[b][i]; //右下 到 左下
}
if(--b < top) break;
for(int i = b; i >= top; i--) {
ans[x++] = matrix[i][l]; //左下 到 左上
}
if(++l > r) break;
}
return ans;
}
//
// public static void main(String[] args) {
// Solution a = new Solution();
// int[][] p = new int[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
// System.out.println(Arrays.toString(a.spiralOrder(p)));
// }
}