贪心策略---种植花朵

种植花朵

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;
}
posted @ 2019-06-29 10:33  yjxyy  阅读(222)  评论(0编辑  收藏  举报