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

neighbors()函数开发任务:统计二维数组指定位置的相邻1元素数量

实现neighbors()函数的解决方案

没问题,我来帮你搞定这个统计二维数组相邻1的数量的函数!

需求回顾

我们需要编写一个neighbors()函数,接收三个参数:

  • 一个二维数组input
  • 目标元素的行索引row
  • 目标元素的列索引column

函数要返回目标位置周围最多8个相邻单元格中值为1的数量,边界/角落的元素会自动忽略超出数组范围的方向。

实现思路

核心思路是遍历所有8个可能的相邻方向,逐个检查每个方向的位置是否合法(不越界),如果合法且值为1就计数:

  1. 定义8个方向的坐标偏移量,涵盖正北、正南、正东、正西和四个对角线方向;
  2. 遍历每个偏移量,计算相邻位置的行和列;
  3. 检查该位置是否在数组的有效范围内;
  4. 如果有效且值为1,就把计数器加1;
  5. 最后返回计数器的值。

完整代码实现

def neighbors(input_array, row, column):
    # 定义8个相邻方向的偏移量(行偏移, 列偏移)
    directions = [(-1, -1), (-1, 0), (-1, 1),
                  (0, -1),          (0, 1),
                  (1, -1),  (1, 0), (1, 1)]
    
    count = 0
    rows = len(input_array)
    # 提前判断输入的行索引是否合法,避免后续报错
    if rows == 0 or row < 0 or row >= rows:
        return 0
    cols = len(input_array[0])
    # 提前判断输入的列索引是否合法
    if column < 0 or column >= cols:
        return 0
    
    for dr, dc in directions:
        neighbor_row = row + dr
        neighbor_col = column + dc
        # 检查相邻位置是否在数组范围内
        if 0 <= neighbor_row < rows and 0 <= neighbor_col < cols:
            # 如果值为1,计数加1
            if input_array[neighbor_row][neighbor_col] == 1:
                count += 1
    return count

测试示例验证

用你给出的测试数组来验证:

array = [ [0, 0, 0, 0], [1, 1, 0, 1], [0, 0, 0, 1] ]
  • 调用neighbors(array, 1, 1):目标位置是第二行第二列的1,周围相邻位置中只有(1,0)是1,其余要么是0要么越界,所以返回1,符合预期;
  • 调用neighbors(array, 2, 2):目标位置是第三行第三列的0,周围合法的相邻位置里有(1,1)、(1,3)、(2,3)三个1,所以返回3,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 17:27:52