zoukankan      html  css  js  c++  java
  • public boolean canPlaceFlowers(List<Boolean> flowerbed, int numberToPlace)

    /*
        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;
        }
    

     

    public class Solution {
        public boolean canPlaceFlowers(int[] flowerbed, int n) {
            int count = 0;
            for(int i = 0; i < flowerbed.length && count < n; i++) {
                if(flowerbed[i] == 0) {
    	     //get next and prev flower bed slot values. If i lies at the ends the next and prev are considered as 0. 
                   int next = (i == flowerbed.length - 1) ? 0 : flowerbed[i + 1]; 
                   int prev = (i == 0) ? 0 : flowerbed[i - 1];
                   if(next == 0 && prev == 0) {
                       flowerbed[i] = 1;
                       count++;
                   }
                }
            }
            
            return count == n;
        }
    }
    

      

     

  • 相关阅读:
    HIHO线段树(成段)
    HIHO 线段树(单点)
    POJ 3468
    HDU 1754
    HDU 1698
    HDU 5119
    HDU 1394
    HDU 1166
    DZY Loves Chessboard
    谷歌Cookies无法写入
  • 原文地址:https://www.cnblogs.com/apanda009/p/7957801.html
Copyright © 2011-2022 走看看