假設你有乙個很長的花壇,一部分地塊種植了花,另一部分卻沒有。可是,花卉不能種植在相鄰的地塊上,它們會爭奪水源,兩者都會死去。
給定乙個花壇(表示為乙個陣列包含0和1,其中0表示沒種植花,1表示種植了花),和乙個數 n 。能否在不打破種植規則的情況下種入 n 朵花?能則返回true,不能則返回false。
我的思路:
其實就是把陣列裡的n個0變成1,所有的1不能相鄰,那麼就要判斷連續的0的個數。
接下來需要研究長度為n的連0串能夠種幾朵花。
注意:開頭的連0串和末尾的連0串可能需要特殊考慮(邊界情況)。
注意:需要考慮全0的情況,第一次提交就被這個坑了!!!!!!!!
我自己推出的結論是:如果長度為n連0串在開頭或者末尾,那麼它最多支援種n/2朵花;如果在中間,那最多支援種(n-1)/2朵花。
臥佛了,彩筆的我沒想到防禦思想,直接在兩邊加0就不用考慮邊界情況了,這樣每三個連續的0就能種一朵花,只要數出左右都是0的0元素個數就行。
我的答案: bool canplaceflowers(vector& flowerbed, int
n) }
continouszero.push_back(count);//要加這句話,不然以0結尾,最後乙個連0串長度不會存入容器,而且可以區分有沒有以1結尾。
for (int i = 0; i < continouszero.size(); ++i)
if (flowerbed==vector(size,0
))//全0的情況的判斷
return maxsize>=n;
}
leetcode每日一題 605 種花問題
題目 假設有乙個很長的花壇,一部分地塊種植了花,另一部分卻沒有。可是,花不能種植在相鄰的地塊上,它們會爭奪水源,兩者都會死去。給你乙個整數陣列 flowerbed 表示花壇,由若干 0 和 1 組成,其中 0 表示沒種植花,1 表示種植了花。另有乙個數 n 能否在不打破種植規則的情況下種入 n 朵花...
每日一題 獎金問題
一 問題描述 二 問題分析 涉及資料 利潤profit,獎金bonus 資料間的關係 當profit 10w,bonus profit 0.1 當profit 20w,bonus 100000 0.1 profit 100000 0.075 三 由使用者輸入乙個利潤,並將輸入轉換為整數型方便進行比較...
每日一題 過橋問題
問題描述 今天偶然在 讀者 上看到了益智問題 試著解了一下,感覺還是很有意思,google了一下,晚上都說是微軟面試題,但是我找了找,在 how to slove it 這本書中就有提到。不知道是誰cp的誰的。好吧,說說問題 u2合唱團在17分鐘內得趕到演唱會,途中必須經過一座橋,4個人從橋的同一端...