矩阵分圈处理
最外圈
内圈
import java.util.ArrayList; import java.util.List; public class 转圈打印矩阵 { public static void main(String[] args) { int a [] [] = {{1,2,3},{4,5,6},{7,8,9}}; // int a [][] = {{1,2,3,4}}; System.out.println(spiralOrder(a)); } public static List<Integer> spiralOrder(int[][] matrix) { List<Integer> a = new ArrayList<>(); int x=0,y=0; int m=matrix.length-1; int k = 0; //判断数组是不是为空,不判断直接 k=matrix[0].length-1,就会越界。 if (matrix.length==0&&matrix!=null) { return a; }else { k=matrix[0].length-1; } while (x<=m&&y<=k) { //如果只有一行 if (x==m) { for (int i = y; i <=k; i++) { a.add(matrix[x][i]); } } //如果只有一列 else if (y==k) { for (int i = x; i<=m; i++) { a.add(matrix[i][y]); } }else { int x0=x,y0=y; while (y0!=k) { //上边 a.add(matrix[x][y0]); y0++; } while (x0!=m) { //右边 a.add(matrix[x0][k]); x0++; } while (y0!=y) { //下边 a.add(matrix[m][y0]); y0--; } while (x0!=x) { //左边 a.add(matrix[x0][y]); x0--; } } //矩阵分圈,进入下一圈。 x++; y++; m--; k--; } return a; } }