假设我们有一个0和1的数组A,考虑N [i]是从索引A [0]到A [i]的第i个子数组,被解释为二进制数。我们必须找到一个布尔答案列表,其中且仅当N [i]被5整除时,答案[i]为真。
因此,如果输入类似于[0,1,1,1,1,1,1],则输出将为[true,false,false,false,true,false]
为了解决这个问题,我们将遵循以下步骤-
长度:= A的大小
ans:=制作一个大小为长度的数组,并用false填充
数字:=通过将A中的每个元素串联而得到的二进制值
对于长度范围为0的i,执行
ans [length-i-1]:=真
如果数字mod 5与0相同,则
数字:=数字/ 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]