假設你有一個很長的花壇,一部分地塊種植了花,另一部分卻沒有。可是,花卉不能種植在相鄰的地塊上,它們會爭奪水源,兩者都會死去。
給定一個花壇(表示爲一個數組包含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, 20000]。
- n 是非負整數,且不會超過輸入數組的大小。
Review:
獲得連續0的數量,當碰到1時計算 (0的數量-1)/2 即爲可種花的數量,
但要注意邊界,兩邊的種花數量爲 : 0的數量/2
Code:
class Solution {
public boolean canPlaceFlowers(final int[] flowerbed, int n) {
int count = 1,res = 0;
for (int i = 0; i < flowerbed.length; i++)
if (flowerbed[i]==0){
count++;
}else {
res+=(count-1)>>1;
count=0;
}
return (res+(count>>1)) >= n;
}
}