สมมติว่าเรามีอาร์เรย์ A เป็น 0 และ 1 วินาที ให้พิจารณาว่า N[i] เป็นอาร์เรย์ย่อยที่ i จากดัชนี A[0] ถึง A[i] ที่ตีความว่าเป็นเลขฐานสอง เราต้องหารายการคำตอบแบบบูลีน โดยที่ answer[i] เป็นจริงก็ต่อเมื่อ N[i] หารด้วย 5 ลงตัวเท่านั้น
ดังนั้น หากอินพุตเป็น [0,1,1,1,1,1,1] ผลลัพธ์จะเป็น [true,false,false,false,true,false]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ความยาว :=ขนาด A
- ans:=สร้างอาร์เรย์ของความยาวขนาด และเติมเท็จ
- number:=ค่าไบนารีโดยเชื่อมแต่ละองค์ประกอบจาก A
- สำหรับฉันในช่วง 0 ถึงความยาว ทำ
- ถ้า mod 5 เท่ากับ 0 แล้ว
- ans[length-i-1] :=จริง
- หมายเลข:=หมายเลข / 2
- ถ้า mod 5 เท่ากับ 0 แล้ว
- คืนสินค้า
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
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]