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

二维数组相邻单元格比较:统计大于所有八邻域元素的单元格数量

二维数组八邻域峰值统计实现方案

需求说明:统计二维矩阵中大于所有八邻域(与当前单元格边、角相触的所有单元格,共最多8个相邻元素)的元素总数量

核心实现逻辑

  • 先预定义八个邻域的坐标偏移量,覆盖所有相邻方向
  • 遍历矩阵的每一个单元格,逐个判断是否为峰值(大于所有合法邻域元素)
  • 对每个单元格,仅判断在矩阵边界内的邻域元素,避免越界报错
  • 只要存在任意一个邻域元素大于等于当前单元格,当前单元格就不属于统计范围,反之计数+1

Python 代码实现

def count_peak_elements(matrix):
    if not matrix or not matrix[0]:
        return 0
    rows = len(matrix)
    cols = len(matrix[0])
    # 八个邻域的坐标偏移量
    directions = [(-1, -1), (-1, 0), (-1, 1),
                  (0, -1),          (0, 1),
                  (1, -1),  (1, 0), (1, 1)]
    count = 0
    for i in range(rows):
        for j in range(cols):
            current = matrix[i][j]
            is_peak = True
            for dx, dy in directions:
                x = i + dx
                y = j + dy
                # 校验邻域坐标是否在矩阵范围内
                if 0 <= x < rows and 0 <= y < cols:
                    if matrix[x][y] >= current:
                        is_peak = False
                        break
            if is_peak:
                count += 1
    return count

# 测试示例矩阵
test_matrix = [[1,2,7],
               [4,5,6],
               [3,8,9]]
print(count_peak_elements(test_matrix)) # 输出结果为 2

示例结果说明

给出的3×3测试矩阵中,符合要求的元素共2个:

  • 坐标(0,2)的元素7,邻域元素为2、5、6,均小于7
  • 坐标(2,2)的元素9,邻域元素为5、6、8,均小于9

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:06:02