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

使用暴力法在二维方阵中查找峰值的最简单或最佳方法是什么

二维方阵峰值查找暴力法最佳实现

你要求的峰值需要同时满足全局最大值、大于四邻域元素两个条件,暴力法最简单高效的实现逻辑如下:

  • 第一步:遍历整个方阵所有元素,记录全局最大值的坐标(max_r, max_c)和对应数值max_val,遍历的时间复杂度为O(n²),n为方阵边长。
  • 第二步:可选四邻域校验。因为全局最大值本身就大于方阵内所有元素,自然也大于其四邻域的元素,除非你的需求后续有调整,否则这一步可以直接省略,拿到全局最大值坐标直接返回即可。如果需要加校验,只需要对记录的坐标做一次四邻域判断,边界元素只校验存在的邻域即可。

代码示例(Python)

def find_peak_bruteforce(square_matrix):
    n = len(square_matrix)
    if n == 0:
        return None
    # 遍历查找全局最大值坐标
    max_value = square_matrix[0][0]
    max_coord = (0, 0)
    for i in range(n):
        for j in range(n):
            if square_matrix[i][j] > max_value:
                max_value = square_matrix[i][j]
                max_coord = (i, j)
    # 以下为可选的四邻域校验逻辑
    r, c = max_coord
    if r > 0 and square_matrix[r-1][c] >= max_value:
        return None
    if r < n - 1 and square_matrix[r+1][c] >= max_value:
        return None
    if c > 0 and square_matrix[r][c-1] >= max_value:
        return None
    if c < n - 1 and square_matrix[r][c+1] >= max_value:
        return None
    return max_coord

方案优势

这种实现是暴力法下的最优解,对比常规的「遍历每个元素逐一判断是否为峰值」的实现方式,少了近4*n²次的比较操作,逻辑更简洁,出错概率更低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:54:09