zoukankan      html  css  js  c++  java
  • 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;
        }
  • 相关阅读:
    三周#学习进度总结
    四则运算(修改版)
    是否需要有代码规范?
    结对项目:代码复审+PSP
    二周#学习进度总结
    GitHub注册流程(中英对比)
    四则运算:我的设计和设想(未完成版)
    Spring4总结
    Hibernate5总结
    Struts2总结
  • 原文地址:https://www.cnblogs.com/skillking/p/9651688.html
Copyright © 2011-2022 走看看