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

顺时针打印矩阵

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;
    }
}
全部评论

相关推荐

野猪不是猪🐗:把你的学校加黑,加粗,斜体,下划线,描边,内阴影,内发光,投影,外发光,再上渐变色,居中,放大到最大字号,再把简历里其它内容删了,就行了
点赞 评论 收藏
分享
程序员卤馆:加v细说
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务