static int [][] data = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}};
public static void main(String[] args) {
int a=0;
int b=3;
int c=3;
int d=0;
int i=0;
int j=0;
System.out.println(data[i][j]);
while(a!=b||c!=d){
while(j<b){
System.out.println(data[i][++j]);
}
if(a!=b){
a++;
}
while(i<c){
System.out.println(data[++i][j]);
}
if(a!=b){
b--;
}
while (j>d){
System.out.println(data[i][--j]);
}
if(c!=d){
c--;
}
while (i>a){
System.out.println(data[--i][j]);
}
if(c!=d){
d++;
}
}
}
由于当时题目读错了,导致没有做出来,十分的伤心。
时间复杂度n2
大概逻辑就是设置a上边界 ,b右边界,c下边界,d左边界 四个边框范围值 二维数组为 arr[i][j]
从[0][0]开始 循环 依次为
循环++i;使得指针到右侧边界 条件j<b(右边界) 执行完后上边界+1
循环++j;使得指针到下侧边界 条件i<c(下边界) 执行完后右边界-1
循环--i;使得指针到左侧边界 条件i<d(左边界) 执行完后下边界-1
循环--j;使得指针到上侧边界 条件i<a(上边界) 执行完后左边界+1
将四个条件循环循环执行,直到上下边界重合且左右边界重合。
注意:当边界加减的时候需要注意上下边界重合,或者左右边界重合就不再改变边界值。否则可能死循环