顺时针打印矩阵

来源:互联网 发布:上瘾网络剧未删减资源 编辑:程序博客网 时间:2024/06/05 13:23

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.


import java.util.ArrayList;public class Solution {    public ArrayList printMatrix(int [][] matrix) {ArrayList list = new ArrayList() ;int[] dx = {0 , 1 , 0 , -1} ; int[] dy = {1 , 0 , -1 , 0} ; int len = 0 ;int n = matrix.length  ;int m = matrix[0].length ; boolean[][] vis = new boolean[n][m]  ;int sum = n*m ; int x = 0 , y = 0 ; int op = 0 ; while(len < sum){list.add(matrix[x][y]) ;vis[x][y] = true ; int nx = x + dx[op] ; int ny = y + dy[op]  ; if(nx < 0 || ny < 0 || nx >= n || ny >= m || vis[nx][ny]){op = (op+1)%4 ;  }x += dx[op] ; y += dy[op] ; len++ ; }return list;     }}
0 0
原创粉丝点击