假設你有乙個很長的花壇,一部分地塊種植了花,另一部分卻沒有。可是,花卉不能種植在相鄰的地塊上,它們會爭奪水源,兩者都會死去。
給定乙個花壇(表示為乙個陣列包含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 是非負整數,且不會超過輸入陣列的大小。
這個題的意思說白了就是插入1之後相鄰兩數字不能相同,且我們要計算插入1的個數。
因此應該最先想到的方法就是連續三個數為0則滿足條件,不瞞你說,我最先想到的也是這。但是這樣寫會存在邊界問題,即:
就是當第乙個元素是0時,你的前乙個元素是不存在的,也就無法判斷。那麼也會有人說那你從第二個元素開始判斷啊,是的,但是還有乙個問題,如果出現001的情況,第一位可以插入1滿足條件,但是也會被判斷為不符合,並且容器末尾100也會出現類似情況。因此乙個好的解決方案就是在容器的前後兩端先插入乙個0,然後從第二個元素(原容器的第乙個元素)開始遍歷,即
class
solution
}return n <= count;}}
;
在這裡一定要注意開始遍歷的位置是begin+1;退出位置為end-1,(end指向末尾元素的下乙個位置)
此外,還有一種演算法,從頭開始遍歷容器:
class
solution
}return n <= count;}}
;
力扣605 種花問題
題目鏈結 題目不是難題,但是需要注意一些細節 如下 思路 即每次可以種花的位置為初始為0,or末尾為0,or臨近點為0的位置 即每次可以種花的位置為初始為0,or末尾為0,or臨近點為0的位置 class solution i return count n 根據題意很容易寫出上述的 直觀且簡潔,但我...
(力扣)第605 種花問題
題目要求 假設有乙個很長的花壇,一部分地塊種植了花,另一部分卻沒有。可是,花不能種植在相鄰的地塊上,它們會爭奪水源,兩者都會死去。給你乙個整數陣列 flowerbed 表示花壇,由若干 0 和 1 組成,其中 0 表示沒種植花,1 表示種植了花。另有乙個數 n 能否在不打破種植規則的情況下種入 n ...
605 種花問題
給定乙個花壇 表示為乙個陣列包含0和1,其中0表示沒種植花,1表示種植了花 和乙個數 n 能否在不打破種植規則的情況下種入 n 朵花?能則返回true,不能則返回false。示例 1 輸入 flowerbed 1,0,0,0,1 n 1 輸出 true示例 2 輸入 flowerbed 1,0,0,...