使用 Javascript 翻转并反转矩阵
问题
我们需要编写一个 JavaScript 函数,它以一个 2-D 二进制数组 arr(一个仅包含 0 或 1 的数组)作为第一个也是唯一一个参数。
我们的函数应首先水平翻转该矩阵,然后将其反转,并返回结果矩阵。
水平翻转矩阵意味着矩阵的每一行都将反转。例如,将 [1, 1, 0] 水平翻转会得到 [0, 1, 1]。
反转矩阵意味着将每个 0 替换为 1,将每个 1 替换为 0。例如,反转 [0, 1, 1] 会得到 [1, 0, 0]。
例如,如果函数的输入是
输入
const arr = [ [1, 1, 0], [1, 0, 1], [0, 0, 0] ];
输出
const output = [ [1,0,0], [0,1,0], [1,1,1] ];
输出解释
首先,我们反转每一行 -
[[0,1,1],[1,0,1],[0,0,0]]
然后,我们反转该矩阵 -
[[1,0,0],[0,1,0],[1,1,1]]
示例
以下为代码 -
const arr = [ [1, 1, 0], [1, 0, 1], [0, 0, 0] ]; const flipAndInvert = (arr = []) => { const invert = n => (n === 1 ? 0 : 1) for(let i = 0; i < arr.length; i++) { for(let j = 0; j < arr[i].length / 2; j++) { const index2 = arr[i].length - 1 - j if(j === index2) { arr[i][j] = invert(arr[i][j]) } else { const temp = arr[i][j] arr[i][j] = arr[i][index2] arr[i][index2] = temp arr[i][j] = invert(arr[i][j]) arr[i][index2] = invert(arr[i][index2]) } } } }; flipAndInvert(arr); console.log(arr);
输出
[ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 1, 1, 1 ] ]
广告