思路:(1)
(2)定义一个变量time,记录输出数的个数(初始为0),当所有元素输出结束后,time的值为row*col。此为结束判定条件
public static void main(String[] args){
int a[][] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16},
{17,18,19,20}
};
int time=0; //5行4列,输出顺序为1,2,3,4,8,12,16,20,19,18,17,13,9,5,6,7,11,15,。。
int M=a.length;
int N=a[0].length;
int j=0;
for(int n=0;;n++){
for(j=n;j<N-n;j++){
time++;
System.out.println(a[n][j]);
}
if(time==M*N)
break;
for(j=n+1;j<M-n;j++){
time++;
System.out.println(a[j][N-n-1]);
}
if(time==M*N)
break;
for(j=N-n-2;j>=n;j--){
time++;
System.out.println(a[M-n-1][j]);
}
if(time==M*N)
break;
for(j=M-n-2;j>=n+1;j--){
time++;
System.out.println(a[j][n]);
}
if(time==M*N)
break;
}
}
本文介绍了一种螺旋遍历二维数组的方法,通过定义一个计数器变量time来跟踪已输出的元素数量,确保每个元素仅被访问一次。该算法适用于任何m行n列的二维数组,并能够按螺旋顺序打印出所有元素。
1220

被折叠的 条评论
为什么被折叠?



