54.螺旋矩阵

14 阅读1分钟
图片.png

其实只要模板掌握了,那就不难,关键点:

  • 会求m和n
  • 另外就是知道返回类型是什么,ArrayList的基础用法
class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
        int m = matrix.length;
        int n = matrix[0].length;
        int up = 0;
        int down = m-1;
        int left = 0;
        int right = n-1;
        ArrayList<Integer> result = new ArrayList<>();
        while(true){
        for(int i = left; i <= right;i++){
            result.add(matrix[up][i]);
        }
        if(++up > down) break;
        
        for(int i = up; i <= down;i++){
            result.add(matrix[i][right]);
        }
        if(--right < left) break;

        for(int i = right; i >= left;i--){
            result.add(matrix[down][i]);
        }
        if(--down < up) break;
        
        for(int i = down; i >= up;i--){
            result.add(matrix[i][left]);
        }
        if(++left > right) break;

        }
        return result;
    }
    
}