如何编程这样去遍历矩阵。
为了方便理解,我这样描述,给定一个矩阵
1 2 3 4
5 6 7 8
9 a b c
d e f g
我需要遍历其左下半部分的数据,按照优先对角线上的、其次优先从上到下遍历,例如1 、6、b、g、5、a、f、9、e、d。
如何编程这样去遍历矩阵。
为了方便理解,我这样描述,给定一个矩阵
1 2 3 4
5 6 7 8
9 a b c
d e f g
我需要遍历其左下半部分的数据,按照优先对角线上的、其次优先从上到下遍历,例如1 、6、b、g、5、a、f、9、e、d。
假设你是 2维数组 存储的矩阵,并且 行数 和 列数 相等(不然对角线要怎么取值还要有定义的)
var cntRow = 4;
var cntCol = 4;
var m = [
[1,2,3,4],
[5,6,7,8],
[9,'a','b','c'],
['d','e','f','g'],
];
var arr = [];
for(i=0; i<cntRow; i++)
{
for(k=0, j=0; k<cntRow - i; k++)
{
arr.push(m[i+j][j++]);
}
}
console.log(arr);
思路说明:遍历
a[y][x]
, 每条斜线都在直线y=x+k
上,因此只要对k
和x
进行嵌套循环就可以了