zoukankan      html  css  js  c++  java
  • 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安装部署ZooKeeper
    基于Ubuntu安装JDK(OPenJDK8)
    Intern Day89
    阿里巴巴Java研发工程师技术一面
    面试
    6_moc.md
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/10355799.html
Copyright © 2011-2022 走看看