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]]
Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.
输出
2
广告