【leetcode】1018. Binary Prefix Divisible By 5
题目如下:
Given an array
A
of0
s and1
s, considerN_i
: the i-th subarray fromA[0]
toA[i]
interpreted as a binary number (from most-significant-bit to least-significant-bit.)Return a list of booleans
answer
, whereanswer[i]
istrue
if and only ifN_i
is divisible by 5.Example 1:
Input: [0,1,1] Output: [true,false,false] Explanation: The input numbers in binary are 0, 01, 011; which are 0, 1, and 3 in base-10. Only the first number is divisible by 5, so answer[0] is true.
Example 2:
Input: [1,1,1] Output: [false,false,false]
Example 3:
Input: [0,1,1,1,1,1] Output: [true,false,false,false,true,false]
Example 4:
Input: [1,1,1,0,1] Output: [false,false,false,false,false]
Note:
1 <= A.length <= 30000
A[i]
is0
or1
解题思路:本题很简单,往左移位即可。每移动一位,如果当前位置的值是1,值需要加上1。
代码如下:
class Solution(object): def prefixesDivBy5(self, A): """ :type A: List[int] :rtype: List[bool] """ res = [] val = 0 for i in A: val = val << 1 if i == 1: val += 1 res.append(val % 5 == 0) return res