最近筆者做了一道算法題,題目要求:用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列數組也一樣,修改一下循環條件即可,來自己動手試下吧~