假設有乙個很長的花壇,一部分地塊種植了花,另一部分卻沒有。可是,花不能種植在相鄰的地塊上,它們會爭奪水源,兩者都會死去。
給你乙個整數陣列 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
class
solution
for(
int i=
0;i(zero%2!=
0&&zero!=0)
hash[1]
=i;}
else
if(zero%2!=
0&&zero!=0)
hash[1]
=i;}
zero=0;
}else}if
(hash.
count(1
)==0)
else
if(ans>=n)
else}if
(hash[1]
!=m-1)
else}if
(ans>=n)
else}}
;
這題可以用線性複雜度解決,
我們思考一下,以1為分割點,看有多少個間隔,裡面又包含幾個0,奇偶分開討論,兩邊也分開討論,兩者相加。這裡面就要用到動態更新的方法,每當有乙個1,就把1的索引更新到最新,方便以後看1是否是末尾的元素。
並且,如果一直沒有1也要分開討論,只有乙個元素0也要討論,就是特殊情況要顧及,我提交了五六次才完全通過140多個測試樣例。
605 種花問題
給定乙個花壇 表示為乙個陣列包含0和1,其中0表示沒種植花,1表示種植了花 和乙個數 n 能否在不打破種植規則的情況下種入 n 朵花?能則返回true,不能則返回false。示例 1 輸入 flowerbed 1,0,0,0,1 n 1 輸出 true示例 2 輸入 flowerbed 1,0,0,...
605 種花問題
假設你有乙個很長的花壇,一部分地塊種植了花,另一部分卻沒有。可是,花卉不能種植在相鄰的地塊上,它們會爭奪水源,兩者都會死去。給定乙個花壇 表示為乙個陣列包含0和1,其中0表示沒種植花,1表示種植了花 和乙個數 n 能否在不打破種植規則的情況下種入 n 朵花?能則返回true,不能則返回false。示...
605 種花問題
解題思路 解決本題需考慮以下三種情況 1.第一種情況 n 0,直接返回true 2.第二種情況 陣列中的元素全是0。在不打破種植規則的情況下種入n朵花,至少需要 2 n 1 個連續0,所以只要陣列長度 2 n 1就返回true,否則返回false 3.第三種情況 n 0且陣列中有1又有0。此時又需要...