zoukankan      html  css  js  c++  java
  • Spiral Matrix

    Spiral Matrix

    问题:

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

    思路:

      矩阵螺旋访问模板

    我的代码:

    public class Solution {
        public List<Integer> spiralOrder(int[][] matrix) {
            List<Integer> list = new ArrayList<Integer>();
            if(matrix == null || matrix.length == 0 || matrix[0].length == 0)   return list;
            int row = matrix.length;
            int col = matrix[0].length;
            int x1 = 0;
            int y1 = 0;
            while(row > 0 && col > 0)
            {
                int x2 = x1 + row - 1;
                int y2 = y1 + col - 1;
                for(int i = y1; i <= y2; i++)
                {
                    list.add(matrix[x1][i]);
                }
                for(int i = x1 + 1; i < x2; i++)
                {
                    list.add(matrix[i][y2]);
                }
                if(row > 1)
                {
                    for(int i = y2; i >= y1; i--)
                    {
                        list.add(matrix[x2][i]);
                    }
                }
                if(col > 1)
                {
                    for(int i = x2 - 1; i > x1; i--)
                    {
                        list.add(matrix[i][y1]);
                    }
                }
                row -= 2;
                col -= 2;
                x1 ++;
                y1 ++;
            }
            return list;
        }
    }
    View Code

    学习之处:

    • 标记好左上角和右下角,防止越界
    • 用矩阵螺旋访问模板简单易行
  • 相关阅读:
    2018-div-matrix
    cf663div2
    生成树
    Call to your teacher
    并查集总结
    分组背包
    被3整除的子序列
    多重背包
    12.05
    django生命周期图
  • 原文地址:https://www.cnblogs.com/sunshisonghit/p/4321324.html
Copyright © 2011-2022 走看看