You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无相邻种花规则:种花可行性判定及异常案例咨询

花坛种花问题答疑

问题概述

给定由0(空地块)和1(已种植地块)组成的数组flowerbed,以及整数n,需判断是否能在相邻地块不可种花的规则下,种下n株新花。满足条件返回true,否则返回false。

示例说明

  • 示例1:输入flowerbed = [1,0,0,0,1], n = 1 → 输出true(可在中间的0位置种1株)
  • 示例2:输入flowerbed = [1,0,0,0,1], n = 2 → 输出false(最多仅能种1株)

针对[0,0,1,0,0], n=1的疑问解答

这个输入的预期输出确实是true,如果你的代码返回false,问题出在没有正确处理数组首尾的边界逻辑:

该花坛的结构是[空, 空, 已种, 空, 空],符合种植条件的位置有两个:

  1. 第0位:左侧无地块,右侧是第1位(空),满足相邻无花,可种;
  2. 第4位:右侧无地块,左侧是第3位(空),满足相邻无花,可种。

所以完全可以种下1株,预期结果正确。你的代码出错,大概率是错误地要求首尾地块的“不存在的邻位”必须为0(或者误判为1),而实际上首尾地块只需要检查存在的那一侧邻位是否为空即可。

正确逻辑示例(伪代码)

count = 0
length = len(flowerbed)
for i in 0 to length-1:
    if flowerbed[i] == 0:
        # 检查左侧是否为空:要么是数组开头,要么左邻是0
        left_ok = (i == 0) or (flowerbed[i-1] == 0)
        # 检查右侧是否为空:要么是数组结尾,要么右邻是0
        right_ok = (i == length-1) or (flowerbed[i+1] == 0)
        
        if left_ok and right_ok:
            flowerbed[i] = 1  # 标记为已种,避免重复计算
            count += 1
            if count >= n:
                return true
return count >= n

用这个逻辑处理[0,0,1,0,0], n=1时,会在第0位成功种花,计数达到1后直接返回true,符合预期。

内容的提问来源于stack exchange,提问作者Rohit_Yadav_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 20:07:23