/*
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 booleans), return if a given number of
new flowers can be planted in it without violating the no-adjacent-flowers rule.
*/
public boolean canPlaceFlowers(List<Boolean> flowerbed, int numberToPlace) {
this.hashCode();
if(flowerbed == null || flowerbed.isEmpty()){
throw new IllegalArgumentException("bed is empty");
}
if(numberToPlace==0)
return true;
if(flowerbed.size()==1){
return !flowerbed.get(0) && numberToPlace<=1;
}
int counter = 0;
for(int i=0; i< flowerbed.size(); i++){
if(!flowerbed.get(i)){
if((i==0 && !flowerbed.get(i+1))
|| (i==flowerbed.size()-1 && !flowerbed.get(i-1))
|| (!flowerbed.get(i+1) && !flowerbed.get(i-1)) ){
//place the flower
flowerbed.set(i, true);
counter++;
if(counter==numberToPlace)
return true;
}
}
}
return false;
}
Flowerbed can place flowers problem
最新推荐文章于 2021-01-27 17:34:56 发布