最近笔者做了一道算法题,题目要求:用js对角线打印一个二维数组,
数组如下所示:
1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 |
按照1,2,5,3,6,9,4,7,10,13….16的顺序输出。
解答:其实不管用什么语言实现都一样,最重要的就是双重循环的循环条件。
以JavaScript为例,代码如下:
<script type="text/javascript">
var arr = new Array(
[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16]
)
for(i=0;i<arr[0].length;i++){
for(j=0;j<=i;j++){
console.log(arr[j][i-j])
}
}
for(i=3;i>0;i--){
for(j=0;j<i;j++){
console.log(arr[3-i+j+1][3-j])
}
}
</script>
以上代码,可以实现要求。其实不仅是四行四列的二位数组,n行n列数组也一样,修改一下循环条件即可,来自己动手试下吧~