1138. 能否放置花
中文English
假设你有一个长花圃,其中有些地块已经被种植了,但是有些地块没有。但是,花不能够在相邻的地块下种植 - 他们会争夺水从而导致两者的死亡。
给定一个花圃(用一个包含0和1的数组来表示,其中0代表空,1代表非空),和一个数字n,返回n朵新的花在这个花圃上以能否在不违反“无相邻花”的规则种植。
样例
样例1
输入: flowerbed = [1,0,0,0,1], n = 1
输出: True
样例2
输入: flowerbed = [1,0,0,0,1], n = 2
输出: False
注意事项
- 输入数组不会违反“无相邻花”规则。
- 数组数组的大小在[1, 20000]内。
- n是一个不会超过输入数组大小的非负的整数。
class Solution: """ @param flowerbed: an array @param n: an Integer @return: if n new flowers can be planted in it without violating the no-adjacent-flowers rule """ ''' 大致思路: 1.分两种情况 当前为1的话,那么跳过,下一位必须为0,也跳过 当前为0的话,那么判断下一位是否为1,如果为1,跳过。否则赋值1 2.初始化count,如果count次数==n的时候,说明是可以放置那么多花的,返回True,否则False ''' def canPlaceFlowers(self,flowerbed, n): if n == 0 or (flowerbed == [0] and n == 1): return True count = 0 flag = True for i in range(len(flowerbed)-1): if flowerbed[i] == 0: if flag == False: flag = True continue elif flag == True: if flowerbed[i+1] == 0: ##直接赋值,不赋值也可以 flowerbed[i] = 1 count += 1 flag = False if count == n: return True else: flag = False return False