题目:
假设你有一个很长的花坛,一部分地块种植了花,另一部分没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去
给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数n。能否在不打破种植规则的情况下种入n朵花?能返回true,否则返回false
分析:
代码:
<script>
const canPlaceFlowers = (arr, n) => {
//n 表示要种几朵花
let max = 0; //计数器
//循环遍历
for (let i = 0, len = arr.length - 1; i < len; i++) {
//判断当前元素是否为0,也就是空地
if (arr[i] === 0) {
// 判断该元素是不是第一个元素并且1的位置是不是为0
if (i === 0 && arr[1] === 0) {
max++;
i++; //使下次判断的起始点从当前元素的下一个元素开始
} else if (arr[i - 1] === 0 && arr[i + 1] === 0) {
max++;
i++; //使下次判断的起始点从当前元素的下一个元素开始
}
}
}
return max >= n ? true : false;
// return max >= n;
}
console.log(canPlaceFlowers([1, 0, 0, 0, 1], 1));
</script>