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

如何实现任意尺寸矩阵指定元素的直接相邻元素总和计算

矩阵相邻元素总和通用实现方案

首先明确:这里的直接相邻默认指八邻域(上下左右+四个对角方向),如果需要调整为仅统计上下左右四邻域,修改偏移量集合即可。

核心思路

无需为每个位置单独编写判断逻辑,仅通过两步即可实现通用适配:

  1. 预定义所有相邻位置相对于目标元素的坐标偏移量
  2. 遍历所有偏移量,判断偏移后的坐标是否在矩阵合法范围内,合法则取值累加

该方案适配任意尺寸的矩阵,且时间复杂度固定为O(1)(偏移量最多8个,遍历次数和矩阵大小无关)。

具体实现(Python示例)

注意:sum_neighbours不能仅传入元素值作为入参,需要传入矩阵本身、目标元素的行索引、列索引,仅传入元素值无法定位其在矩阵中的位置,无法查找相邻元素。

def sum_neighbours(matrix, row_idx, col_idx):
    # 定义8个相邻位置的坐标偏移:(行偏移, 列偏移)
    offsets = [(-1, -1), (-1, 0), (-1, 1),
               (0, -1),          (0, 1),
               (1, -1),  (1, 0), (1, 1)]
    total = 0
    # 获取矩阵的总行数、总列数
    total_rows = len(matrix)
    total_cols = len(matrix[0]) if total_rows > 0 else 0
    
    for dr, dc in offsets:
        # 计算偏移后的坐标
        new_r = row_idx + dr
        new_c = col_idx + dc
        # 判断坐标是否合法:行范围0~total_rows-1,列范围0~total_cols-1
        if 0 <= new_r < total_rows and 0 <= new_c < total_cols:
            total += matrix[new_r][new_c]
    return total

# 测试用例
matrix = [[1, 2, 3],
          [4, 5, 6],
          [7, 8, 9]]
print(sum_neighbours(matrix, 0, 0)) # 输出11,匹配预期
print(sum_neighbours(matrix, 1, 1)) # 输出40,匹配预期

扩展调整

如果后续需要改为仅统计四邻域(仅上下左右),只需要把offsets修改为以下内容即可:

offsets = [(-1, 0), (1, 0), (0, -1), (0, 1)]

方案优势

  • 通用:支持任意尺寸的二维矩阵,包括非正方形矩阵
  • 高效:固定遍历8次,和矩阵尺寸无关
  • 易维护:不需要为不同位置写单独的判断逻辑,修改相邻规则仅需要调整偏移量列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:24:05