Leetcode 605:種花問題
阿新 • • 發佈:2022-02-07
題目描述
假設有一個很長的花壇,一部分地塊種植了花,另一部分卻沒有。可是,花不能種植在相鄰的地塊上,它們會爭奪水源,兩者都會死去。
給你一個整數陣列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; } }