Files
2021-01-14 01:25:19 +08:00

70 lines
1.6 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# [1018. Binary Prefix Divisible By 5](https://leetcode.com/problems/binary-prefix-divisible-by-5/)
## 题目
Given an array `A` of `0`s and `1`s, consider `N_i`: the i-th subarray from `A[0]` to `A[i]` interpreted as a binary number (from most-significant-bit to least-significant-bit.)
Return a list of booleans `answer`, where `answer[i]` is `true` if and only if `N_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. `1 <= A.length <= 30000`
2. `A[i]` is `0` or `1`
## 题目大意
给定由若干 0  1 组成的数组 A。我们定义 N_i A[0] 到 A[i] 的第 i 个子数组被解释为一个二进制数从最高有效位到最低有效位。返回布尔值列表 answer只有当 N_i 可以被 5 整除时答案 answer[i] 为 true否则为 false。
## 解题思路
- 简单题。每扫描数组中的一个数字,累计转换成二进制数对 5 取余,如果余数为 0则存入 true否则存入 false。
## 代码
```go
package leetcode
func prefixesDivBy5(a []int) []bool {
res, num := make([]bool, len(a)), 0
for i, v := range a {
num = (num<<1 | v) % 5
res[i] = num == 0
}
return res
}
```