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
- 如果 number 模 5 与 0 相同,则
- 返回 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]
广告