在 Python 中翻转列以获得最大数量的相等行
pythonserver side programmingprogramming更新于 2023/10/5 8:13:00
假设我们有一个由 0 和 1 组成的矩阵,我们可以选择矩阵中的任意数量的列并翻转该列中的每个单元格。转换单元格会将该单元格的值从 0 更改为 1 或从 1 更改为 0。我们必须找到经过一定次数的翻转后所有值都相等的最大行数。因此,如果矩阵类似于 −
0 | 0 | 0 |
0 | 0 | 1 |
1 | 1 | 0 |
输出将为 2。这是因为在转换前两列的值后,后两行的值相等。
为了解决这个问题,我们将遵循以下步骤 −
- x := 矩阵,m := 行数和 n := 列数和 r := 0
- 对于 x 中的每个元素 i
- c := 0
- a := a 列表,对于 i 中的所有元素 l,插入 l XOR i
- 对于 x 中的每个元素 j
- 如果 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