Leetcode53_Spiral_Matrix
Spiral_Matrix
https://leetcode-cn.com/problems/spiral-matrix/
//当行数只有一行: 1、 n = 1; m -> 0; //当列数只有一列 2、m = 1; n -> 0; //行数为 n, 列数为m 3、 。。。。。。 。。。。。。 。。。。。。 。。。。。。
1) 第一次 x, y y = 0; x : 0 -> m-1; x = m-1; y : 0 -> n-1; y = n-1; x : m -> 0; x = 0; y : n -> 1 2) 第二次 y = 1; x : 0 -> m -2; x = m-2; y : 1 -> n - 2; y = n -2; x:m -1 -> 1; x = m-2; y : n-1 -> 2 ...以此类推
代码
class Solution { public List<Integer> spiralOrder(int[][] matrix) { ArrayList<Integer> list = new ArrayList<Integer>(); if (matrix == null || matrix.length == 0) { return null; } int n = matrix[0].length; int m = matrix.length; int x = 0, y = 0; int i, j; while (n > 0 && m > 0) { if (n == 1) { for (int k = 0; k < m; k++) { list.add(matrix[k][0]); } return list; } if (m == 1) { for (int k = 0; k < n; k++) { list.add(matrix[0][k]); } return list; } i = x; j = y; for (; i < n; i++) { list.add(matrix[j][i]); } i --; j ++; for (; j < m; j++) { list.add(matrix[j][i]); } i --; j --; for(; i >= x ; i--) { list.add(matrix[j][i]); } j--; i++; for(; j >= y + 1; j--) { list.add(matrix[j][i]); } x++; y++; m--; n--; } return list; } }