假設你有乙個很長的花壇,一部分地塊種植了花,另一部分卻沒有。可是,花卉不能種植在相鄰的地塊上,它們會爭奪水源,兩者都會死去。
給定乙個花壇(表示為乙個陣列包含0和1,其中0表示沒種植花,1表示種植了花),和乙個數 n 。能否在不打破種植規則的情況下種入 n 朵花?能則返回true,不能則返回false。
示例 1:
輸入: flowerbed = [1,0,0,0,1], n = 1示例 2:輸出: true
輸入: flowerbed = [1,0,0,0,1], n = 2注意:輸出: false
陣列內已種好的花不會違反種植規則。
輸入的陣列長度範圍為 [1, 20000]。
n 是非負整數,且不會超過輸入陣列的大小。
方法1思路:用指標遍歷,頭尾單獨考慮,只要有連續的3個0,就能種上一朵花,注意種上花之後把原陣列的值改了,方便後面判斷
複雜度分析:
時間複雜度:o(n+k)
空間複雜度:o(1)
bool
canplaceflowers
(vector<
int>
& flowerbed,
int n)
else
return
true;}
int i =1;
int j =2;
while
(jsize()
-1)else
i = j;
if(n<=0)
return
true;}
if(flowerbed[0]
==0&& flowerbed[1]
==0)if
(flowerbed[flowerbed.
size()
-1]==
0&& flowerbed[flowerbed.
size()
-2]==
0) n--;if
(n<=0)
return
true
;else
return
false
;}
方法2
思路:直接順序遍歷,注意開頭部分
複雜度分析:
時間複雜度:o(n)
空間複雜度:o(1)
class
solution}if
(flowerbed.
size()
>1)
}}for(
int i=
1; isize()
; i++
)else
continue;}
else}}
if(n<=0)
return
true
;else
return
false;}
};
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 種花問題
解題思路 解決本題需考慮以下三種情況 1.第一種情況 n 0,直接返回true 2.第二種情況 陣列中的元素全是0。在不打破種植規則的情況下種入n朵花,至少需要 2 n 1 個連續0,所以只要陣列長度 2 n 1就返回true,否則返回false 3.第三種情況 n 0且陣列中有1又有0。此時又需要...
605 種花問題
題目描述 假設你有乙個很長的花壇,一部分地塊種植了花,另一部分卻沒有。可是,花卉不能種植在相鄰的地塊上,它們會爭奪水源,兩者都會死去。給定乙個花壇 表示為乙個陣列包含0和1,其中0表示沒種植花,1表示種植了花 和乙個數 n 能否在不打破種植規則的情況下種入 n 朵花?能則返回true,不能則返回fa...