Python 中翻轉列以獲得最大數量的相等行
假設我們有一個由 0 和 1 組成的矩陣,我們可以選擇矩陣中的任意數量的列,並翻轉該列中的每個單元格。轉換單元格會將該單元格的值從 0 更改為 1,或從 1 更改為 0。我們必須找到在進行一些翻轉後具有所有值相等的行的最大數量。如果矩陣如下所示:
| 0 | 0 | 0 |
| 0 | 0 | 1 |
| 1 | 1 | 0 |
輸出將為 2。這是因為在轉換前兩列中的值後,最後兩行具有相等的值。
為了解決這個問題,我們將遵循以下步驟:
- x := 矩陣,m := 行數,n := 列數,r := 0
- 對於每個元素 i in x
- c := 0
- a := 一個列表,對於所有元素 l in i,插入 l XOR i
- 對於每個元素 j in x
- 如果 j = i 或 j = a,則將 c 增加 1
- r := c 和 r 的最大值
- 返回 r
讓我們看看下面的實現,以便更好地理解:
示例
class Solution(object): def maxEqualRowsAfterFlips(self, matrix): x = matrix m = len(matrix) n = len(matrix[0] ) r =0 for i in x: c=0 a=[l ^ 1 for l in i] for j in x: if j== i or j ==a: c+=1 r=max(c, r) return r ob = Solution() print(ob.maxEqualRowsAfterFlips([[0,0,0],[0,0,1],[1,1,0]]))
輸入
[[0,0,0],[0,0,1],[1,1,0]]
輸出
2
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP