• 54. Spiral Matrix


    Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.

    Example 1:

    Input:
    [
     [ 1, 2, 3 ],
     [ 4, 5, 6 ],
     [ 7, 8, 9 ]
    ]
    Output: [1,2,3,6,9,8,7,4,5]
    

    Example 2:

    Input:
    [
      [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]
    1.从左到右,然后判断
    2.从上到下,然后判断
    3.从右到左,然后判断
    4.从下到上,然后判断
    class Solution {
        public List<Integer> spiralOrder(int[][] matrix) {
            List<Integer> res = new ArrayList<Integer>();
            if(matrix.length==0 || matrix[0].length ==0) return res;  //记住要判断空的情况
            int m = matrix.length, n = matrix[0].length;
            int up = 0, down = m-1, left = 0, right = n-1;
            while(true){
                for(int j = left; j <= right; j++) res.add(matrix[up][j]);
                if(++up > down) break;
                for(int i = up; i <= down; i++) res.add(matrix[i][right]);
                if(--right < left) break;
                for(int j = right; j >= left; j--) res.add(matrix[down][j]);
                if(--down < up) break;
                for(int i = down; i >= up; i--) res.add(matrix[i][left]);
                if(++left > right) break;
            }
            return res;
        }
    }
  • 相关阅读:
    ubuntu 更新软件
    如何在linux(lubuntu)下搭建C/C++开发环境
    Linux下如何查看版本信息
    知识点笔记
    Require.js中使用jQuery 插件
    async中常用总结
    node.js在遇到“循环+异步”时的注意事项
    前端性能优化
    生产/消费者问题
    线程与内存
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/10355799.html
Copyright © 2020-2023  润新知