如题
难度是简单,反而不可轻视,没注意特殊情况让我提交好几次才成功
public static boolean canPlaceFlowers(int[] flowerbed, int n) {
int count = 0; //可放入的总个数
int num = 0; //连续的0个数
int flag = 0; //是否出现1的标志
for (int i = 0; i < flowerbed.length; i++) {
if (flowerbed[i] == 0) {
num++;
} else { //遍历1了计算前面可放入多少个
if (flag == 0) { //前面未出现1 即为00001情况 很显然奇数位可放,计算有多少对奇偶即可
count = num / 2 + count;
flag = 1; //注意修改标志位
} else { //出现过1 很显然是1000001情况,此时偶数位可放,即计算除去一位后有多少对即可
count = (num - 1) / 2 + count;
}
num = 0; //记得计算后归零
}
} //对应结尾为0时的情况
if (flag == 0) { //从未出现零,即00000这种,直接判断有多少个奇数位可放
count = (num + 1) / 2 + count;
} else { //对应10000,此时计算有多少个偶数位可放
count = num / 2 + count;
}
return count < n ? false : true;
}
很直观的写法,就是得全面考虑,结果
花坛种花问题解析
本文详细解析了一道关于在花坛中种植花卉的算法题目,重点在于如何处理特殊情况,确保算法的正确性和效率。通过具体代码示例,阐述了在遍历过程中遇到不同状态时的处理策略,强调了全面考虑各种情况的重要性。
585

被折叠的 条评论
为什么被折叠?



