题解 | #顺时针打印矩阵#

顺时针打印矩阵

http://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a

import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> printMatrix(int [][] matrix) {
        ArrayList<Integer> retList = new ArrayList<>() ;
        if(matrix == null || matrix.length==0 || matrix[0].length==0) {
            return retList ;
        }
        //定义边界
        int up = 0 ;
        int down = matrix.length-1 ;
        int left = 0 ;
        int right = matrix[0].length-1 ;
        //定义坐标(i,j)
        int i = 0 ;
        int j = 0 ;
        while(isOk(up , down , left , right , i , j)) {
            //向右运动
            while(j <= right) {
                retList.add(matrix[i][j]);
                j ++ ;
            }
            j--;
            i++;
            up++ ;
            //向下运动
            if(!isOk(up , down , left , right , i , j)) {
                break ;
            }
            while(i <= down) {
               retList.add(matrix[i][j]);
                i ++ ;
            }
            i-- ;
            j--;
            right--;
            //向左运动
            if(!isOk(up , down , left , right , i , j)) {
                break ;
            }
            while(j >= left) {
               retList.add(matrix[i][j]);
                j-- ;
            }
            j++ ;
            i--;
            down-- ;
            //向上运动
            if(!isOk(up , down , left , right , i , j)) {
                break ;
            }
            while(i >= up) {
               retList.add(matrix[i][j]);
               i-- ;
            }
            i++ ;
            j++ ;
            left++;
        }
        return retList ;
    }
    //判断是否超出边界
    public boolean isOk(int up , int down , int left , int right , int i , int j) {
        if(i >= up && i <= down && j >= left && j <= right) {
            return true ;
        }
        return false ;
    }
}

一个菜鸟的算法刷题记录 文章被收录于专栏

分享一个菜鸟的成长记录

全部评论

相关推荐

10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务