• 1138. 能否放置花


    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. 输入数组不会违反“无相邻花”规则。
    2. 数组数组的大小在[1, 20000]内。
    3. 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
  • 相关阅读:
    ASP.NET MVC中防止跨站请求攻击(CSRF)
    C#操作JSON学习
    C# 产生随机密码
    博客园上好的技术系列收藏
    OWIN学习
    bzoj1068: [SCOI2007]压缩
    bzoj1012: [JSOI2008]最大数maxnumber
    bzoj1055: [HAOI2008]玩具取名
    bzoj1011: [HNOI2008]遥远的行星
    bzoj1008: [HNOI2008]越狱
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12684796.html
Copyright © 2020-2023  润新知