605. Can Place Flowers种植花园即边界处理

来源:互联网 发布:云涯seo 编辑:程序博客网 时间:2024/04/27 17:15

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 numbern, return ifn new flowers can be planted in it without violating the no-adjacent-flowers rule.

Example 1:

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

Example 2:

Input: flowerbed = [1,0,0,0,1], n = 2Output: False

Note:

  1. The input array won't violate no-adjacent-flowers rule.
  2. The input array size is in the range of [1, 20000].
  3. n is a non-negative integer which won't exceed the input array size.



class Solution {    public boolean canPlaceFlowers(int[] flowerbed, int n) {        int count=1;//用于第一个元素就是0的情况        int result=0;        for(int i=0;i<flowerbed.length;i++){            if(flowerbed[i]==0){                count++;            }else{                result+=(count-1)/2;                count=0;            }           }        if(count!=0){//说明flowerbed是以0结束的            result+=count/2;        }        return result>=n;    }}

题目意思是说,数组中元素的0和1分别表示没有花或有花种在此处,种花需要满足的是不能相邻,如果给定的target即n小于花圃中可以种植花的数量则返回true

解题思路:一般情况是零夹在1中间,这种情况需要考虑到紧挨着1的零是不可以种植花的,所以计数出这种情况的0的各种,(count-1)/2可以满足要求;而对于元素第一个就是零的情况和以零结尾的情况,直接count/2即可。

原创粉丝点击