二元矩阵是一个二维数组,每个单元中仅包含 1 和 0 元素。二元矩阵的水平对称性意味着如果第一行与最后一行相同,第二行与倒数第二行相同,依此类推。类似地,垂直对称意味着第一列和最后一列、倒数第二列和倒数第二列等是否相同。在这个问题中,我们给定一个矩阵,我们将检测其中是否存在水平和垂直对称性。
1 0 1 0 0 0 1 0 1
Both, horizontal and vertical symmetry is present.
解释-第一行和最后一行相同,这意味着存在水平对称。同样,第一列和最后一列相同,导致垂直对称。
1 0 1 0 0 0 1 1 0
None of the symmetry is present.
说明- 第一行不等于最后一行,第一列不等于最后一列。
我们已经看过示例来了解给定的问题,现在让我们看看实现代码的步骤 -
首先,我们将定义一个函数来检查给定矩阵的水平对称性。该函数将采用给定矩阵的单个参数,并返回当前矩阵是否水平对称。
我们将遍历矩阵,对于每一行,我们将与穿过矩阵中间的假想线另一侧的行进行比较,并且与当前行的距离相同。 p>
我们将定义一个函数来检查给定矩阵的垂直对称性。该函数将采用一个参数,即给定的矩阵。
我们将遍历矩阵,对于每一列,我们将与穿过矩阵中间的假想线另一侧的列进行比较,并且与当前列的距离相同。 p>
我们将调用这两个函数,并根据返回值打印结果。
// function to check horizontal symmetry function horizontalSymm(mat){ var rows = mat.length; var cols = mat[0].length; for(var i = 0; i< rows/2; i++){ for(var j = 0;j<cols; j++){ if(mat[i][j] != mat[rows-i-1][j]){ return false; } } } return true; } // function to check vertical symmetry function verticalSymm(mat){ var rows = mat.length; var cols = mat[0].length; for(var i = 0; i< cols/2; i++){ for(var j = 0;j<rows; j++){ if(mat[j][i] != mat[j][cols-i-1]){ return false; } } } return true; } // function to check the symmetry of the given matrix function check(mat){ var horSymm = horizontalSymm(mat); var varSymm = verticalSymm(mat); if(horSymm && varSymm){ console.log("Both, horizontal and vertical symmetries are present in the given matrix"); } else if(horSymm){ console.log("The given binary matrix is only horizontally symmetric"); } else if(varSymm){ console.log("The given binary matrix is only vertically symmetric"); } else{ console.log("The given binary matrix is neither horizontally symmetric nor vertically symmetric"); } } // defining the given matrix var mat = [[1, 0, 1], [0, 0, 0], [1, 0, 1]]; console.log("The given matrix is: ") console.log(mat); check(mat); // defining the given matrix var mat = [[1, 0, 1], [0, 0, 0], [1, 1, 0]]; console.log("The given matrix is: ") console.log(mat); check(mat);
The given matrix is: [ [ 1, 0, 1 ], [ 0, 0, 0 ], [ 1, 0, 1 ] ] Both, horizontal and vertical symmetries are present in the given matrix The given matrix is: [ [ 1, 0, 1 ], [ 0, 0, 0 ], [ 1, 1, 0 ] ] The given binary matrix is neither horizontally symmetric nor vertically symmetric
上述代码的时间复杂度为 O(N*M),其中 N 是给定矩阵的行数,M 是给定矩阵的列数。我们将遍历整个矩阵两次,一次是水平对称,另一次是垂直对称。
上述代码的空间复杂度为 O(1),因为我们没有使用任何额外的空间。
在本教程中,我们实现了一个 JavaScript 程序来查找给定的矩阵,当前矩阵是否水平或垂直对称。二元矩阵的水平对称性意味着如果第一行与最后一行相同,则第二行与倒数第二行完全相同,依此类推。类似地,垂直对称意味着第一列和最后一列、倒数第二列和倒数第二列等是否相同。我们实现了一个时间复杂度为 O(N*M)、空间复杂度为 O(1) 的程序。
以上是JavaScript 程序检查二进制矩阵中的水平和垂直对称性的详细内容。更多信息请关注PHP中文网其他相关文章!