Skip to content

Commit 7c4b022

Browse files
committed
[0114]ADD:LC-1018
1 parent d602756 commit 7c4b022

File tree

2 files changed

+57
-4
lines changed

2 files changed

+57
-4
lines changed

readme.md

+7-4
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
[[20210104]1688. 比赛中的配对次数-Easy](回溯法/1688.%20比赛中的配对次数-Easy.md)
44
[[20210105]830. 较大分组的位置-Easy](字符串/830.%20较大分组的位置-Easy.md)
55
[[20210108]131. 分割回文串-Medium](回溯法/131.%20分割回文串-Medium.md)
6-
[[20210108]189. 旋转数组-Medium](189.%20旋转数组-Medium.md)
7-
[[20210113]1202. 交换字符串中的元素-Medium](1202.%20交换字符串中的元素-Medium.md)
6+
[[20210108]189. 旋转数组-Medium](数组/189.%20旋转数组-Medium.md)
7+
[[20210113]1202. 交换字符串中的元素-Medium](并查集/1202.%20交换字符串中的元素-Medium.md)
8+
[[20210114]1018. 可被 5 整除的二进制前缀-Easy](数组/1018.%20可被%205%20整除的二进制前缀-Easy.md)
89
## 2020.12
910
[[20201201]34. 在排序数组中查找元素的第一个和最后一个位置-Medium](数组/34.%20在排序数组中查找元素的第一个和最后一个位置-Medium.md)
1011
[[20201202]292. Nim 游戏-Easy](动态规划/292.%20Nim%20游戏-Easy.md)
@@ -90,18 +91,20 @@
9091
[15. 三数之和 - Medium](双指针/15.%20三数之和%20-%20Medium.md)
9192
[18. 四数之和-Medium](双指针/18.%20四数之和-medium.md)
9293
[34. 在排序数组中查找元素的第一个和最后一个位置-Medium](数组/34.%20在排序数组中查找元素的第一个和最后一个位置-Medium.md)
93-
[189. 旋转数组-Medium](189.%20旋转数组-Medium.md)
94+
[189. 旋转数组-Medium](数组/189.%20旋转数组-Medium.md)
9495
[560. 和为K的子数组-Medium](数组/560.%20和为K的子数组-Medium.md)
9596
[611. 有效三角形的个数 - Medium](./双指针/611.%20有效三角形的个数%20-%20Medium.md)
9697
[845. 数组中的最长山脉-Medium](双指针/845.%20数组中的最长山脉-Medium)
9798
[925. 长按键入-Easy](双指针/925.%20长按键入-Easy.md)
9899
[1002. 查找常用字符-Easy](数组/1002.%20查找常用字符-Easy.md)
100+
[1018. 可被 5 整除的二进制前缀-Easy](数组/1018.%20可被%205%20整除的二进制前缀-Easy.md)
99101
[1365. 有多少小于当前数字的数字-Easy](数组/1365.%20有多少小于当前数字的数字-Easy)
100102

101103
## 并查集
104+
### 并查集详解, [link](https://leetcode-cn.com/problems/number-of-provinces/solution/python-duo-tu-xiang-jie-bing-cha-ji-by-m-vjdr/)
102105
[684. 冗余连接-Medium](并查集/684.%20冗余连接-Medium.md)
103106
[990. 等式方程的可满足性-Medium](并查集/990.%20等式方程的可满足性-Medium.md)
104-
[1202. 交换字符串中的元素-Medium](1202.%20交换字符串中的元素-Medium.md)
107+
[1202. 交换字符串中的元素-Medium](并查集/1202.%20交换字符串中的元素-Medium.md)
105108

106109
## 链表
107110
[2. 两数相加-Medium](链表/2.%20两数相加-Medium.md)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# [Description](https://leetcode-cn.com/problems/binary-prefix-divisible-by-5)
2+
给定由若干 0 和 1 组成的数组 A。我们定义 N_i:从 A[0] 到 A[i] 的第 i 个子数组被解释为一个二进制数(从最高有效位到最低有效位)。
3+
4+
返回布尔值列表 answer,只有当 N_i 可以被 5 整除时,答案 answer[i] 为 true,否则为 false。
5+
6+
示例 1:
7+
```python
8+
输入:[0,1,1]
9+
输出:[true,false,false]
10+
解释:
11+
输入数字为 0, 01, 011;也就是十进制中的 0, 1, 3 。只有第一个数可以被 5 整除,因此 answer[0] 为真。
12+
```
13+
示例 2:
14+
```python
15+
输入:[1,1,1]
16+
输出:[false,false,false]
17+
```
18+
示例 3:
19+
```python
20+
输入:[0,1,1,1,1,1]
21+
输出:[true,false,false,false,true,false]
22+
```
23+
示例 4:
24+
```python
25+
输入:[1,1,1,0,1]
26+
输出:[false,false,false,false,false]
27+
```
28+
29+
提示:
30+
31+
- 1 <= A.length <= 30000
32+
- A[i] 为 0 或 1
33+
34+
35+
# Solution
36+
- 时间复杂度:$O(n)$
37+
- 空间复杂度:$O(n)$,允许修改A的话为$O(1)$
38+
39+
40+
```python
41+
# 极致速度,使用位运算优化计算
42+
class Solution:
43+
def prefixesDivBy5(self, A: List[int]) -> List[bool]:
44+
res = []
45+
pre = 0
46+
for i in A:
47+
pre = ((pre<<1)+i)%5
48+
res.append(not pre)
49+
return res
50+
```

0 commit comments

Comments
 (0)