您的位置 首页 > 数码极客

“java如何打印二维数组“java打印二维数组代码 java二维数组初始化

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵:

[[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]

第一种解法,首先打印第一行的数据,打印最后一列数据,打印最后一行数据,最后打印第一列数据,这样就完成了矩阵最外面的数据,里面的二维数组是一个新的矩阵,可以套用外面的解法,使用递归来解决,但是遇到只有一列数据或者只有一行数据的时候,得考虑特殊处理。代码如下

public static ArrayList<Integer> firstPrintMatrix(int [][] matrix) { ArrayList<Integer> list = new ArrayList<>(); if(null == matrix || ma < 1){ return null; } print(matrix,list); return list; } public static ArrayList<Integer> print(int [][] matrix,ArrayList<Integer> list){ //行 4 int row = ma; //列 1 int col = matrix[0].length; if(row ==1 || col == 1){ for (int i = 0 ; i < row; i++){ for (int j =0 ; j < col ;j++){ li(matrix[i][j]); } } }else { //第一行 行不变,列变化 for (int i = 0; i < col; i++){ li(matrix[0][i]); } //最后一列 行变化,列不变 for (int i = 1; i < row; i++){ li(matrix[i][col-1]); } //最后一行,行不变,列变化 for (int i = col-2; i > -1; i--){ li(matrix[row-1][i]); } //第一列,行变化,列不变 for (int i = row-2; i > 0; i--){ li(matrix[i][0]); } } if (row - 2 > 0 && col - 2 > 0) { //构造新的二维数组 int array[][] = new int[row - 2][col - 2]; for (int i = 1; i <= row - 2; i++) { for (int j = 1; j <= col - 2; j++) { array[i - 1][j - 1] = matrix[i][j]; } } print(array,list); } return list; }

第二种解法,和第一种类似,但是实现逻辑不一样,还是先遍历最外围的数据,然后往内收缩,重新创建一个四边形,代码如下

public static ArrayList<Integer> secondPrintMatrix(int [][] matrix) { ArrayList<Integer> list = new ArrayList<>(); if(null == matrix || ma < 1){ return null; } int top = 0; //行 int bottom = ma; int left = 0; //列 int right = matrix[0].length; while (top < bottom && left < right){ //第一行 行不变,列变化 for (int i = left; i < right ;i++){ li(matrix[top][i]); } //最后一列 行变化,列不变 for (int i = top+1; i < bottom; i++){ li(matrix[i][right-1]); } //最后一行,行不变,列变化 for(int i=right-2;i>=left&&bottom-1!=top;i--){ li(matrix[bottom-1][i]); } for(int i=bottom-2;i>top&&right-1!=left;i--){ li(matrix[i][left]); } top++; bottom--; left++; right--; } return list; }

完整代码如下

public class MainPrintMatrix { public static void main(String[] args) { //int [][]array = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; int [][]array = {{1},{2},{3},{4}}; //int [][]array = {{1,2},{3,4}}; ArrayList<Integer> integers = firstPrintMatrix(array); Sy("integers = " + integers); } public static ArrayList<Integer> firstPrintMatrix(int [][] matrix) { ArrayList<Integer> list = new ArrayList<>(); if(null == matrix || ma < 1){ return null; } print(matrix,list); return list; } public static ArrayList<Integer> print(int [][] matrix,ArrayList<Integer> list){ //行 4 int row = ma; //列 1 int col = matrix[0].length; if(row ==1 || col == 1){ for (int i = 0 ; i < row; i++){ for (int j =0 ; j < col ;j++){ li(matrix[i][j]); } } }else { //第一行 行不变,列变化 for (int i = 0; i < col; i++){ li(matrix[0][i]); } //最后一列 行变化,列不变 for (int i = 1; i < row; i++){ li(matrix[i][col-1]); } //最后一行,行不变,列变化 for (int i = col-2; i > -1; i--){ li(matrix[row-1][i]); } //第一列,行变化,列不变 for (int i = row-2; i > 0; i--){ li(matrix[i][0]); } } if (row - 2 > 0 && col - 2 > 0) { //构造新的二维数组 int array[][] = new int[row - 2][col - 2]; for (int i = 1; i <= row - 2; i++) { for (int j = 1; j <= col - 2; j++) { array[i - 1][j - 1] = matrix[i][j]; } } print(array,list); } return list; } public static ArrayList<Integer> secondPrintMatrix(int [][] matrix) { ArrayList<Integer> list = new ArrayList<>(); if(null == matrix || ma < 1){ return null; } int top = 0; //行 int bottom = ma; int left = 0; //列 int right = matrix[0].length; while (top < bottom && left < right){ //第一行 行不变,列变化 for (int i = left; i < right ;i++){ li(matrix[top][i]); } //最后一列 行变化,列不变 for (int i = top+1; i < bottom; i++){ li(matrix[i][right-1]); } //最后一行,行不变,列变化 for(int i=right-2;i>=left&&bottom-1!=top;i--){ li(matrix[bottom-1][i]); } for(int i=bottom-2;i>top&&right-1!=left;i--){ li(matrix[i][left]); } top++; bottom--; left++; right--; } return list; } }

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“java如何打印二维数组,java打印二维数组代码,java打印二维数组的方法,java打印二维数组对角线”边界阅读