概述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.
设计测试用例:
int arr[][]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; int arr[][]={{1,2,3},{4,5,6},{7,8,9}}; int arr[][]={};
int arr=null; int arr[][]={{1}}; int arr[][]={{1,2,3,4,5},{6,7,8,9,10}}; int arr[][]={{1,2,3,4,5}}; int arr[][]={{1},{2},{3},{4},{5}};
思路概述:首先控制能打印多少圈,然后分别打印每一圈。
如下代码可以直接在java1.7环境下运行通过。
package com.mytest.mymain;
import java.util.ArrayList;
public class TTest {
public static void main(String[] args) {
ArrayList<Integer> al=new ArrayList<Integer>();
int arr[][]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
//int arr[][]={{1},{2},{3},{4},{5}};
int arr[][]={{1,2,3},{4,5,6},{7,8,9}};
//int arr[][]={};
//int arr[][]={{1}};
///int arr[][]={{1,2,3,4,5},{6,7,8,9,10}};
///int arr[][]={{1,2,3,4,5}};
if(arr==null || arr.length==0)
return;
al=printMatrix(arr);
System.out.println(al);
}
public static ArrayList<Integer> printMatrix(int [][] matrix) {
ArrayList<Integer> al=new ArrayList<Integer>();
if(matrix==null)
return null;
//打印圈行大于2s,列大于2s;
int start=0;
while(matrix[0].length>2*start && matrix.length>2*start){ //控制打印多少圈的 //条件,这个很重要。
al=printcircle(al,matrix,start);
start++;
}
return al;
}
private static ArrayList<Integer> printcircle(ArrayList<Integer> all,int[][] aa, int start) {
for(int i=start;i<aa[0].length-start;i++){//打印一边
System.out.println("111:"+aa[start][i]);
all.add(aa[start][i]);
}
for(int i=start+1;i<aa.length-start;i++){//打印一边,注意不要重复打印拐角
System.out.println("222:"+aa[i][aa[0].length-start-1]);
all.add(aa[i][aa[0].length-start-1]);
}
if(aa.length-start-1>start){//防止从右向左打印和从左向右边打印重复,否则测试
//用例int arr[][]={{1,2,3,4,5}};输出为:1,2,3,4,5,4,3,2
for(int i=aa[0].length-start-2;i>=start;i--){//打印一边
System.out.println("333:"+aa[aa.length-start-1][i]);
all.add(aa[aa.length-start-1][i]);
}
}
if(aa[0].length-start-1>start){
//防止从右向左打印和从左向右边打印重复,否则测试
//例int arr[][]={{1},{2},{3},{4},{5}};输出为:1,2,3,4,5,4,3,2
for(int i=aa.length-start-2;i>start;i--){//打印一边
System.out.println("444:"+aa[i][start]);
all.add(aa[i][start]);
}
}
return all;
}
}
运行效果:
最后
以上就是苹果天空为你收集整理的从外向里以顺时针的顺序依次打印出矩阵的每一个数字的全部内容,希望文章能够帮你解决从外向里以顺时针的顺序依次打印出矩阵的每一个数字所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复