题目描述
题目分析
- 种花的条件就是不能相邻种植,也就是说如果当前这个值为
1
,那左右两边的值都要为0
,这样才符合条件
解法分析
- 对于每个数都要看左值和右值,如果是开头和结尾,就只需要看其中一个就行了
代码
class Solution {
public boolean canPlaceFlowers(int[] flowerbed, int n) {
int i = 0, count = 0;
// 遍历数组
while (i < flowerbed.length) {
// 判断左右两边以及当前值是否都为 0
if (flowerbed[i] == 0 &&
// 判断是否是开头
// 开头就只需要看右边的值是否为 0
(i == 0 || flowerbed[i - 1] == 0) &&
// 判断是否是结尾
// 结尾就只需要看左边的值是否为 0
(i == flowerbed.length - 1 || flowerbed[i + 1] == 0)
) {
// 种花,置 1
flowerbed[i] = 1;
// 花的数量加一
count++;
}
// 如果已经达到了数量,直接返回即可
if(count >= n) return true;
i++;
}
// 遍历完判断是否满足
return count >= n;
}
}