示例 1:
输入:flowerbed = [1,0,0,0,1], n = 1
输出:true
示例 2:
输入:flowerbed = [1,0,0,0,1], n = 2
输出:false
flowerbed 数组中 1 表示已经种下了花朵。花朵之间至少需要一个单位的间隔,求解是否能种下 n 朵花
func canPlaceFlowers(flowerbed []int, n int) bool {
//判断特殊情况
if len(flowerbed) < 2 {
//这三种情况属于true,其他情况为false
if (flowerbed[0] == 0 && n == 1) || (flowerbed[0] == 1 && n == 0) || (flowerbed[0] == 0 && n == 0) {
return true
} else {
return false
}
}
//初始化计数
count := 0
//遍历数组
for i, _ := range flowerbed {
//当目前位置值为1时跳过
if flowerbed[i] == 1 {
continue
} else {
//当i为首个位置,若为0,则判断下一个是否为0,如果是0,则赋值1,有效位置count数+1
if i == 0 && flowerbed[i] == 0 && flowerbed[i+1] == 0 {
flowerbed[i] = 1
count++
}
//当i为末尾位置,若为0,则判断前一个是否为0,如果是0,则赋值1,有效位置count数+1
if i == len(flowerbed)-1 && flowerbed[i-1] == 0 {
flowerbed[i-1] = 1
count++
}
//当i处于中间位置,判断前后两个是否为0,如果是,则赋值当前位置为1,有效位置count数+1
if 0 < i && i < len(flowerbed)-1 && flowerbed[i-1] == 0 && flowerbed[i+1] == 0 {
flowerbed[i] = 1
count++
}
}
}
//返回判断
return count >= n
}