其他分享
首页 > 其他分享> > 贪心策略---种植花朵

贪心策略---种植花朵

作者:互联网

种植花朵

605. Can Place Flowers (Easy)

Input: flowerbed = [1,0,0,0,1], n = 1
Output: True

题目描述:

  flowered数组中1表示已经种下了花朵。花朵之间至少需要一个单位的间隔,求解能否种下n多花。

思路分析:

  访问到flowered[i]为0,则查看flowered[i-1]和flowered[i+1]是否为零,如果满足前后都为0,则可以在坐标i种下一朵花。

代码:

public boolean canPlaceFlowers(int []flowerbed,int n){
    int len=flowerbed.length;
    int cnt=0;//记录可以种下的花朵数
    if(len==0)
        return false;
    for(int i=0;i<len&&cnt<n;i++){
        if(flowerbed[i]==1)
            continue;
        int pre=i==0?0:flowerbed[i-1];
        int next=i==len-1?0:flowerbed[i+1];
        if(pre==0&&next==0){
            cnt++;
            flowerbed[i]=1;
        }
    }
    return cnt>=n;
}

标签:花朵,种植,flowerbed,种下,int,flowered,len,贪心
来源: https://www.cnblogs.com/yjxyy/p/11105916.html