1. 程式人生 > 其它 >Leetcode 605:種花問題

Leetcode 605:種花問題

題目描述

假設有一個很長的花壇,一部分地塊種植了花,另一部分卻沒有。可是,花不能種植在相鄰的地塊上,它們會爭奪水源,兩者都會死去。
給你一個整數陣列flowerbed 表示花壇,由若干 0 和 1 組成,其中 0 表示沒種植花,1 表示種植了花。另有一個數n ,能否在不打破種植規則的情況下種入n朵花?能則返回 true ,不能則返回 false。
示例 1:
輸入:flowerbed = [1,0,0,0,1], n = 1
輸出:true
示例 2:
輸入:flowerbed = [1,0,0,0,1], n = 2
輸出:false>

思路
這道題可以用貪心,遍歷每一個位置,判斷條件:
1、當前位置為0
2、前面的位置為0或者是邊界
3、後面的位置為0或者是邊界

當滿足以上三個條件,則可以種花。

程式碼

class Solution {
    public boolean canPlaceFlowers(int[] flowerbed, int n) {
        int num=flowerbed.length;
        for(int i=0;i<num;i++){
            if(flowerbed[i]==0 && (i==0||flowerbed[i-1]==0) && (i==num-1||flowerbed[i+1]==0)){
                n--;
                flowerbed[i]=1;
            }
        }
        if(n<=0){
            return true;
        }
        return false;
    }
}