Python 中可被 5 整除的二进制前缀


假设我们有一个数组 A,其中包含 0 和 1,则 N[i] 是从索引 A[0] 到 A[i] 的第 i 个子数组,解释为二进制数。我们需要找到一个布尔值回答的列表,其中当且仅当 N[i] 可被 5 整除时,answer[i] 才为真。

因此,如果输入类似于 [0,1,1,1,1,1],则输出将为 [true,false,false,false,true,false]

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

  • length := A 的大小
  • ans:= 制作一个大小为 length 的数组,并用 false 填充
  • number := 通过连接 A 中的每个元素形成的二进制值
  • 对 range 0 到 length 中的 i 执行以下操作:
    • 如果 number 模 5 与 0 相同,则
      • ans[length-i-1] := True
    • number := number / 2
  • 返回 ans

让我们参考以下实现以获得更好的理解:

示例

 实时演示

class Solution:
   def prefixesDivBy5(self, A):
      length=len(A)
      ans=[False]*length
      number=int("".join(map(str,A)),2)
      for i in range(length):
         if number%5==0:
            ans[length-i-1]=True
            number=number>>1
      return ans
ob = Solution()
print(ob.prefixesDivBy5([0,1,1,1,1,1]))

输入

[0,1,1,1,1,1]

输出

[True, False, False, False, True, False]

更新于: 06-07-2020

115 次浏览

开始您的职业生涯

完成课程获得认证

开始
广告