题目如下:
Given an array
Aof0s and1s, 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]istrueif and only ifN_iis 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 <= 30000A[i]is0or1
解题思路:本题很简单,往左移位即可。每移动一位,如果当前位置的值是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