原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public:
bool canPlaceFlowers(vector<int>& f, int n) {
for (int i = 0, len = f.size(); i < len && n > 0;) {
// 从花坛第一个位置开始扫描
if (f[i] == 1) {
// 如果当前种了花,往前跳 2 格,因为无论下一格是 0 还是 1,都不可能再种
i += 2;
} else if (i == len - 1 || f[i + 1] == 0) {
// 如果当前位置没种花,而且,是最后一个位置或者下一个位置没有种花,就可以在当前格子种
n--;
i += 2;
} else {
// 当前位置没种花,但是下一个位置种了花,当前格子肯定种不了,在下一个格子是 1,要往后跳 2 格,所以在当前位置要往后跳 3 格
i += 3;
}
}
return n <= 0;
}
};