• 54. Spiral Matrix


    一、题目

      1、审题

      2、分析:

        给出一个 mXn 的二维数组,旋转着输出数组元素。

    二、解答

      1、思路:

        从左向右、右向左时要判断列越界问题;

        从上向下、下向上要判断行越界问题;

        

    public List<Integer> spiralOrder(int[][] matrix) {
            
            List<Integer> resultList = new ArrayList<>();
             
            if(matrix.length == 0)
                return resultList;
            
            int rowBegin = 0;
            int rowEnd = matrix.length - 1;
            int colBegin = 0;
            int colEnd = matrix[0].length - 1;
            
            while(rowBegin <= rowEnd && colBegin <= colEnd) {
                
                // traverse Right --------->
                for(int j = colBegin; j <= colEnd; j++) 
                    resultList.add(matrix[rowBegin][j]);
                
                rowBegin++;
                
                // traverse Down      |
                //                      V
                for(int j = rowBegin; j <= rowEnd; j++)
                    resultList.add(matrix[j][colEnd]);
                colEnd--;
                
                
                // traverse left  <----------------
                if(rowBegin <= rowEnd) {
                    for(int j = colEnd; j >= colBegin; j--)
                        resultList.add(matrix[rowEnd][j]);
                }
                rowEnd--;
                
                // traverse up      ^
                //                    |
                if(colBegin <= colEnd){
                    for(int j = rowEnd; j >= rowBegin; j--)
                        resultList.add(matrix[j][colBegin]);
                }
                colBegin++;
            }
            return resultList;
        }
  • 相关阅读:
    深入理解C++ 11新特性:1)
    Effective Java 第三版:1)
    Java 8 实战:2)
    MyBatis Plus
    Java 8 实战:1)
    十二要素应用宣言
    Dubbo 2):源码级
    [SCOI2009]windy数 数位dp
    [ZJOI2006]物流运输 最短路 动态规划
    [ZJOI2008]骑士
  • 原文地址:https://www.cnblogs.com/skillking/p/9651688.html
Copyright © 2020-2023  润新知