605. Can Place Flowers - Easy
前往題目
想法
- 指定一個中點,看左右是否是
0
思路
- 把花床前後各加一個
0
,這樣就可以在看中點時,不遺漏頭尾的0
- 疊代整個加長過的花床,遇到一組
3
個0
的就在中間種一朵花 - 最後如果還有花剩下,
false
,否則true
自己寫了蠻長的雖然思路對了但是edge case
無法解決
Code
class Solution {
public boolean canPlaceFlowers(int[] flowerbed, int n) {
if (n == 0) return true;
// 擴展花床,前後補0
int[] realflowerbed = new int[flowerbed.length + 2];
realflowerbed[0] = 0;
realflowerbed[realflowerbed.length - 1] = 0;
for (int i = 0; i < flowerbed.length; ++i) {
realflowerbed[i + 1] = flowerbed[i];
}
// 擴展後的花床,3個一組檢查
for (int i = 1; i < realflowerbed.length - 1; ++i) {
if (realflowerbed[i] == 0 && realflowerbed[i - 1] == 0 && realflowerbed[i + 1] == 0) {
// 種花
realflowerbed[i] = 1;
// 減去一朵花
--n;
}
}
// 沒花剩下就成功了
return n <= 0 ? true : false;
}
}
605. Can Place Flowers - Easy
https://f88083.github.io/2024/03/20/605-Can-Place-Flowers-Easy/