LeetCode( 605) 種花問題

2022-07-13 10:54:10 字數 886 閱讀 7150

本題為leetcode第605題,是一道貪心演算法相關的演算法題,難度簡單。

假設有乙個很長的花壇,一部分地塊種植了花,另一部分卻沒有。可是花不能種植在相鄰的地塊上,它們會爭奪水源,兩者都會死去。

給你乙個整數陣列 flowerbed 表示花壇,由若干 0 和 1 組成,其中 0 表示沒種植花,1 表示種植了花。另有乙個數 n ,能否在不打破種植規則的情況下種入 n 朵花?能則返回 true ,不能則返回 false。

示例1:

input:  flowerbed = [1,0,0,0,1], n = 1

output: true

示例2:

input:  flowerbed = [1,0,0,0,1], n = 2

output: false

實質上該題也是一道求最優解的演算法題。只需求解可種花數的最大值,再和 n 做比較,大於等於 n 返回 true ,小於 n 返回 false。由於同時分析所有地塊比較複雜,我們可以從左往右對所有地塊進行逐一分析,因此可以使用貪心演算法。(注意:初始陣列也無法違背種植規則)

從左往右分析每一地塊,若該地塊有花(為1),則忽略該地塊和下乙個地塊,分析下下個地塊;

若該地塊無花(為0),則判斷下乙個地塊是否有花;

若下乙個地塊無花(為0),則該地塊可以種花,分析下下個地塊;

若下乙個地塊有花(為1),則跳轉至步驟1;

迴圈往復,直至最後乙個地塊(由於最後乙個地塊右邊沒有地塊,所以假設最後乙個地塊右邊是乙個無花(為0)的地塊)。

class solution else }}

return count - n >= 0;

}}

Leetcode 605 種花問題

假設你有乙個很長的花壇,一部分地塊種植了花,另一部分卻沒有。可是,花卉不能種植在相鄰的地塊上,它們會爭奪水源,兩者都會死去。給定乙個花壇 表示為乙個陣列包含0和1,其中0表示沒種植花,1表示種植了花 和乙個數n。能否在不打破種植規則的情況下種入n朵花?能則返回true,不能則返回false。示例 1...

LeetCode 605 種花問題

假設你有乙個很長的花壇,一部分地塊種植了花,另一部分卻沒有。可是,花卉不能種植在相鄰的地塊上,它們會爭奪水源,兩者都會死去。給定乙個花壇 表示為乙個陣列包含0和1,其中0表示沒種植花,1表示種植了花 和乙個數 n 能否在不打破種植規則的情況下種入 n 朵花?能則返回true,不能則返回false。示...

LeetCode 605 種花問題

假設你有乙個很長的花壇,一部分地塊種植了花,另一部分卻沒有。可是,花卉不能種植在相鄰的地塊上,它們會爭奪水源,兩者都會死去。給定乙個花壇 表示為乙個陣列包含0和1,其中0表示沒種植花,1表示種植了花 和乙個數 n 能否在不打破種植規則的情況下種入 n 朵花?能則返回true,不能則返回false。解...