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;
    }
}

  

 

 

 

 

 

 

 

 

 

 

posted @ 2019-11-25 19:05  李荣先辈Java  阅读(114)  评论(0编辑  收藏  举报