1018. Binary Prefix Divisible By 5
Description
You are given a binary array nums
(0-indexed).
We define xi
as the number whose binary representation is the subarray nums[0..i]
(from most-significant-bit to least-significant-bit).
- For example, if
nums = [1,0,1]
, thenx0 = 1
,x1 = 2
, andx2 = 5
.
Return an array of booleans answer
where answer[i]
is true
if xi
is divisible by 5
.
Example 1:
Input: nums = [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: nums = [1,1,1] Output: [false,false,false]
Constraints:
1 <= nums.length <= 105
nums[i]
is either0
or1
.
Solutions
Solution 1: Simulation
We use a variable \(x\) to represent the current binary prefix, then traverse the array \(nums\). For each element \(v\), we left shift \(x\) by one bit, then add \(v\), and take the result modulo \(5\). If the result equals \(0\), it means the current binary prefix is divisible by \(5\), and we add \(\textit{true}\) to the answer array; otherwise, we add \(\textit{false}\) to the answer array.
The time complexity is \(O(n)\), and ignoring the space consumption of the answer array, the space complexity is \(O(1)\).
1 2 3 4 5 6 7 8 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
|
1 2 3 4 5 6 7 8 |
|
1 2 3 4 5 6 7 8 9 |
|