Python中的Boss战斗
假设我们有一个名为fighters的二进制列表和另一个名为bosses的二进制列表列表。在fighters列表中,1代表一个战士。类似地,在bosses列表中,1代表一个Boss。如果战士的数量多于Boss的数量,则战士可以击败Boss的行。我们必须返回一个删除了失败Boss行的新的bosses矩阵。
因此,如果输入类似于fighters = [0,1,1]
0 | 1 | 1 |
0 | 0 | 0 |
0 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
那么输出将是
0 | 1 | 1 |
1 | 1 | 1 |
为了解决这个问题,我们将遵循以下步骤:
fighter_cnt := fighters所有元素的总和
result := 一个新的列表
对于bosses中的每一行,执行:
如果fighter_cnt <= 行中每个元素的总和,则
将行插入result的末尾
返回result
让我们看看下面的实现以更好地理解:
示例
class Solution: def solve(self, fighters, bosses): fighter_cnt = sum(fighters) result = [] for row in bosses: if fighter_cnt <= sum(row): result.append(row) return result ob = Solution() fighters = [0, 1, 1] bosses = [[0, 0, 0], [0, 0, 1], [0, 1, 1], [1, 1, 1]] print(ob.solve(fighters, bosses))
输入
[0, 1, 1], [[0, 0, 0], [0, 0, 1], [0, 1, 1], [1, 1, 1]]
输出
[[0, 1, 1], [1, 1, 1]]
广告