Python中的Boss战斗


假设我们有一个名为fighters的二进制列表和另一个名为bosses的二进制列表列表。在fighters列表中,1代表一个战士。类似地,在bosses列表中,1代表一个Boss。如果战士的数量多于Boss的数量,则战士可以击败Boss的行。我们必须返回一个删除了失败Boss行的新的bosses矩阵。

因此,如果输入类似于fighters = [0,1,1]

011
000
001
011
111

那么输出将是

011
111

为了解决这个问题,我们将遵循以下步骤:

  • 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]]

更新于:2020年9月2日

496 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告