首页 > 解决方案 > 求矩阵/二维数组的 N 次遍历

问题描述

给定矩阵/二维数组 1 2 3 4 5 6 7 8 9

我们必须打印

7 4 1 5 9 6 3 在 javascript 中不使用内置函数

标签: javascriptmatrixmultidimensional-array

解决方案


这里有一个提示。

假设您的矩阵表示为一维整数数组:

m = [1,2,3,4,5,6,7,8,9];

逻辑上假定为“正方形”大小(1x1、2x2、3x3、4x4 等...)

所以上面的数组在逻辑上被假设为:

1 2 3
4 5 6 
7 8 9

让我们使用一个辅助函数来帮助我们获得任何给定 (x,y) 位置的任何值。其中 (0,0) 是矩阵的左上角值

let getVal = (m, col, row) => {
    let rowlen = Math.round(Math.sqrt(m.length));
    let index = row * rowlen + col;
    return m[index];
}

因此,getVal(m, 0, 0)返回1左上角并getVal(m,2,2)返回右下角9的值。

现在提供了那个小辅助函数,你认为你可以实现“从左下角向上”、“从左上角到右下角的对角线”和“从右下角向上”这三个 for 循环吗?


推荐阅读