二维数组相邻单元格比较:统计大于所有八邻域元素的单元格数量
二维数组八邻域峰值统计实现方案
需求说明:统计二维矩阵中大于所有八邻域(与当前单元格边、角相触的所有单元格,共最多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
相关产品推荐
相关产品推荐

