跳到主要内容

2397.被列覆盖的最多行数

链接:2397.被列覆盖的最多行数
难度:Medium
标签:位运算、数组、回溯、枚举、矩阵
简介:返回一个整数,表示可以由 numSelect 列构成的集合 覆盖 的 最大行数 。

题解 1 - python

  • 编辑时间:2024-01-04
  • 执行用时:48ms
  • 内存消耗:16.85MB
  • 编程语言:python
  • 解法介绍:遍历所有列覆盖的情况。
class Solution:
def maximumRows(self, matrix: List[List[int]], numSelect: int) -> int:
n = len(matrix)
m = len(matrix[0])
rows = []
for i in range(n):
used = 0
for j in range(m):
if matrix[i][j] == 1: used |= 1 << j
rows.append(used)
ans = 0
for used in range(1 << m):
if bin(used).count('1') != numSelect: continue
count = sum((rows[i] & used) == rows[i] for i in range(n))
ans = max(ans, count)
return ans