二進位矩陣是一個只由兩個數字組成的矩陣,如其名所示,這兩個數字是1和0。在本文中,我們將透過程式碼和適當的解釋來更好地理解概念。在本教程中,我們將編寫一個JavaScript程式來計算給定二進位矩陣中1和0的集合。
在這個問題中,我們給定了一個二進位矩陣,我們需要找到包含相同值的行或列的集合。一個集合可以是單一值,也可以是任意大小,但條件是它必須包含來自行或列的相同元素。例如,
我們有一個二進位矩陣,它有兩行三列,看起來像這樣 -
1 0 1 0 0 1
1和0的集合數量可以計算為
Set of size 1 − All the cells of the matrix are distinct sets in itself and there is a total of 6 cells.
大小為2的集合 - 第二行的前兩列具有相同的值,第二列和第三列的值也相同,共有2個大小為2且具有相同值的集合。第一行還有兩個1可以被視為一個集合
#大小為3的集合 - 矩陣中可能的最大集合大小是行和列的最大大小,這裡是3。但是,對於大小,沒有可用的包含相同值的集合。
因此,我們分別有6個、3個和0個套裝可用於尺寸為1、2和3的情況。因此,最終我們的答案將是9。
In the previous section, we have seen that we have to focus on only a particular row or column to get the number of similar elements in it. Also, we will use a mathematical concept to count the numbersizes with countsizes withsizes with count)。 present in a particular row or column.
例如,如果我們在行中有x個1的總數,則不同大小為1到x的1的集合的總數將來自於排列組合。
讓我們轉向這個方法 -
首先,我們將得到一個包含零和一的數組,或者說是給定的二進位矩陣。
我們將建立一個函數,用於自動計算傳遞給它作為參數的任何矩陣的所需答案,並將答案作為傳回值傳回。
在這個函數中,我們將兩次遍歷數組或二進位矩陣,一次是按行,第二次是按列。
在for迴圈中,我們將維護兩個變量,一個用於儲存1的個數,另一個用於儲存0的個數。
在遍歷單行或單列後,我們將使用上面所見的公式更新答案,並將答案儲存在我們的變數中。
最後,我們將透過從中刪除行*列來傳回答案,因為我們已經將它們新增了兩次。
我們已經移除了行 * 列,因為在遍歷行時,將集合與兩個零和一個一的單值相加,而在遍歷列時又進行了一次。
讓我們來看看上述步驟的實現,以便更好地理解這些概念 -
// given variables var cols = 3; // no of columns var rows = 2; // no of rows // function to solve the problem with passed array function fun(arr) { // variable to store the final answer var ans = 0; // traversing over the rows using for loop for (var i = 0; i < rows; i++) { var ones = 0, zeroes = 0; for ( var j = 0; j < cols; j++) { if (arr[i][j] == 1) ones++; else zeroes++; } // increasing the answer on the basis of current count based on ones ans = ans + Math.pow(2, ones)-1; // based on zeros ans = ans + Math.pow(2, zeroes)-1; } //traversing over the columns using for loop for (var i = 0; i < cols; i++) { var ones = 0, zeroes = 0; for ( var j = 0; j < rows; j++) { if (arr[j][i] == 1) ones++; else zeroes++; } //increasing the answer on the basis of current count based on ones ans = ans + Math.pow(2, ones)-1; // based on zeros ans = ans + Math.pow(2, zeroes)-1; } return ans - (rows * cols); } var arr = [ [ 1, 0, 1 ], [ 0, 1, 0 ] ]; console.log("Total number of the sets in the given binary matrix is: " + fun(arr));
上述程式碼的時間複雜度為O(N*N),其中N是給定矩陣的行數和列數中的最大值。
不使用額外的空間,因此程式碼的空間複雜度為O(1)。
在本教程中,我們學習如何編寫一個JavaScript程序,用於計算給定二進位矩陣中1和0的集合數量。二進位矩陣是只包含兩個數字的矩陣,如其名稱所示,這兩個數字是1和0。所討論的程式碼的時間複雜度為O(N*N),空間複雜度為O(1)。
以上是JavaScript程式:計算二進位矩陣中1和0的集合數的詳細內容。更多資訊請關注PHP中文網其他相關文章!