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

二维有序矩阵O(N)查找算法咨询:伪代码与时间复杂度分析

O(N)时间复杂度的有序矩阵查找算法

核心思路

这种每行、每列都递增的矩阵有个关键特性:右上角的元素是当前行的最大值、当前列的最小值(左下角则是当前行最小值、当前列最大值)。利用这个特性可以快速缩小查找范围:

  • 若当前元素等于目标,直接返回位置;
  • 若当前元素比目标大,目标肯定不在当前列(列从上到下递增),直接左移一列;
  • 若当前元素比目标小,目标肯定不在当前行(行从左到右递增),直接下移一行;
  • 重复操作直到找到目标或越界(说明目标不存在)。

伪代码实现

FUNCTION searchInMatrix(matrix, target):
    N = 矩阵的行数(等于列数)
    row = 0
    col = N - 1  // 起始点设为右上角
    
    WHILE row < N AND col >= 0:
        current = matrix[row][col]
        IF current == target:
            RETURN (row, col)  // 返回目标坐标
        ELSE IF current > target:
            col -= 1  // 左移,排除当前列
        ELSE:
            row += 1  // 下移,排除当前行
    
    RETURN NULL  // 未找到目标

时间复杂度分析

最坏情况下,我们需要从右上角遍历到左下角:每次循环只会改变row或col其中一个变量,最多执行2N-1次循环(比如目标比所有元素小,会左移N次;目标比所有元素大,会下移N次;中间情况则是两者的组合)。因此时间复杂度为O(N),完全符合要求。

空间复杂度为O(1),仅使用了几个临时变量,没有额外空间开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 04:55:55