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 次瀏覽

開始您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.