leetcode Day17----array.easy

本文探讨了在遵循不相邻种植规则下,如何判断是否能在特定的花坛中种植指定数量的新花。提供了C语言和Python3两种实现方案,详细解释了算法思路,并对比了运行效率。

Can Place Flowers

Suppose you have a long flowerbed in which some of the plots are planted and some are not. However, flowers cannot be planted in adjacent plots - they would compete for water and both would die.

Given a flowerbed (represented as an array containing 0 and 1, where 0 means empty and 1 means not empty), and a number n, return if n new flowers can be planted in it without violating the no-adjacent-flowers rule.

Example 1:
Input: flowerbed = [1,0,0,0,1], n = 1
Output: True
Example 2:
Input: flowerbed = [1,0,0,0,1], n = 2
Output: False
Note:
The input array won’t violate no-adjacent-flowers rule.
The input array size is in the range of [1, 20000].
n is a non-negative integer which won’t exceed the input array size.

C语言

bool canPlaceFlowers(int* flowerbed, int flowerbedSize, int n){
    int i=0,count=0;
    if(flowerbedSize<2){if(flowerbed[0]+n<=1)return true;else return false;}
   
    while((i<flowerbedSize)&&(n>0)){
        if(flowerbed[i]==0){
            count++;
            if(count==flowerbedSize){
                int a=(count+1)/2;n=n-a;
                if(n>0) return false;
                else return true;}
        }
        else{
            if((count!=0)&&(i-count>0)){n-=((count-1)/2);}
            if((count!=0)&&(i-count==0)){n-=(count/2);}
            count=0;
        }
        i++;
    }
    if(flowerbed[flowerbedSize-1]==0){n-=(count/2);}
    if(n>0) return false;
    else return true;
}


Success
Details
Runtime: 28 ms, faster than 5.88% of C online submissions for Can Place Flowers.
Memory Usage: 8.3 MB, less than 100.00% of C online submissions for Can Place Flowers.

python3

class Solution:
    def canPlaceFlowers(self, flowerbed: List[int], n: int) -> bool:
        for i, x in enumerate(flowerbed):
            if (not x and (i == 0 or flowerbed[i-1] == 0)
                and (i == len(flowerbed)-1 or flowerbed[i+1] == 0)):
                n -= 1
                flowerbed[i] = 1
        return n <= 0

Success
Details
Runtime: 68 ms, faster than 38.68% of Python3 online submissions for Can Place Flowers.
Memory Usage: 13.2 MB, less than 6.85% of Python3 online submissions for Can Place Flowers.

Maximum Distance in Arrays

等我有钱了解锁这道题了再说叭

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值