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

顺时针打印矩阵

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

import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> printMatrix(int [][] matrix) {
       if(matrix.length == 0)return new ArrayList<Integer>();
       int[] ax= new int[]{0,1, 0,-1};
       int[] ay= new int[]{1,0,-1,0};
       int turn = 0,i = 0,j = -1;//turn表示方向 0右 1下 2左 3上
       int n=matrix.length, m=matrix[0].length, count = n*m;
       int[][] visit = new int[n][m];//访问数组
       ArrayList<Integer> ans = new ArrayList<>();
      
       while(count>0){
           boolean flag = true;
           while(flag){
               if(i+ax[turn] < n && i+ax[turn] >= 0 && j+ay[turn] < m && j+ay[turn] >= 0 && visit[i+ax[turn]][j+ay[turn]] == 0){
                   i = i+ax[turn];
                   j = j+ay[turn];
                   flag = false;
               } else turn = (turn+1)%4;
           }//循环找方向
           ans.add(matrix[i][j]);
           visit[i][j] = 1;
           count--;
       }
       return ans;
    }
}
全部评论

相关推荐

04-11 21:31
四川大学 Java
野猪不是猪🐗:(ja)va学弟这招太狠了
点赞 评论 收藏
分享
爱吃肉的伊登在写日记:好棒,27届简历能做成这个样子,但是第一个项目感觉cover住难度还是不小的,特别是二面的时候肯定要对分布式系统设计这一块儿有高出正常面试者的水平才行
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务