这几天考了一些公司的笔试,现凭着一些记忆,对有关算法实现题做解析并实现。
1.二维数组,从右上到左下进行打印输出,如:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16.输出4,3,8,2,7,12,1,6,11,16,5,10,15,9,14,13。
解析:
(1)比较笨的方法
从右上角看,中心对角以上的输出顺序为:
i=0,j=3;
i=0,j=2;i=1,j=3;
i=0,j=1; i=1,j=2;i=2;j=3;
……
由此可以看出: i=0。。len-1;设置count从0到len-1;j=len-count-1;
即:
int count=0;
int size=arr.length;
while(count<size){
int i=0,j=size-count-1;
while((i<size)&&(j<size)){
System.out.println(arr[i][j]);
i++;
j++;
}
count++;
}
从下半部分可以看出:
i=1,j=0;i=2,j=1;i=3,j=2;