605.种花问题

46 阅读1分钟

题目:
假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。

给你一个整数数组  flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n ****,能否在不打破种植规则的情况下种入 n ****朵花?能则返回 true ,不能则返回 false
算法:

func canPlaceFlowers(flowerbed []int, n int) bool {
	if n == 0 {
		return true
	}
	for i := range flowerbed {
		if canPlace(flowerbed, i){
			flowerbed[i] = 1
			n --
			if n == 0 {
				return true
			}
		}
	}
	return false
}

func canPlace(flowerbed []int, i int) bool {
	if flowerbed[i] == 0 && (i - 1 < 0 || flowerbed[i - 1] == 0) && (i + 1 >= len(flowerbed) || flowerbed[i + 1] == 0){
		return true
	}
	return false
}