算法(TS):搜索二维矩阵 II

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

  • 每行的元素从左到右升序排列。
  • 每列的元素从上到下升序排列。

输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5 输出:true

解法一

从左上角开始找,行首比target小,行尾比target大,则target可能在本行,其余情况均不在本行

ts 复制代码
function searchMatrix(matrix: number[][], target: number): boolean {
    const colTotal = matrix[0].length
    let isExist = false;
    for (const row of matrix) {
        const head = row[0]
        const tail = row[colTotal -1]
        if (head === target || tail === target) {
            isExist = true
            break
        }

        if (head < target && tail > target) {
            // 遍历本行
            isExist = row.indexOf(target) > -1
            if (isExist) {
                break
            }
        }
    }

    return isExist
};

空间复杂度O(1),时间复杂度O(nlogn)

解法二

从右上角开始找,如果查找到的值小于 target,则往下找,如果查找到的值大于 target,则往左找

ts 复制代码
function searchMatrix(matrix: number[][], target: number): boolean {
    let rowIndex = 0
    let colIndex = matrix[0].length - 1
    let isExist = false
    while(colIndex >= 0 && rowIndex < matrix.length) {
        const current = matrix[rowIndex][colIndex]
        if (current === target) {
            isExist = true
            break
        }

        if (current < target) {
            rowIndex++
        } else {
            colIndex--
        }
    }

    return isExist
};

空间复杂度 O(1),时间复杂度O(n)

相关推荐
linux-hzh4 分钟前
day07
前端·javascript·css
拓端研究室TRL6 分钟前
消费者网络购物意向分析:调优逻辑回归LR与决策树模型在电商用户购买预测中的应用及特征重要性优化
人工智能·算法·决策树·机器学习·逻辑回归
新中地GIS开发老师7 分钟前
新中地三维GIS开发智慧城市效果和应用场景
javascript·arcgis·智慧城市·gis开发·webgis·地理信息科学
进阶的小蜉蝣10 分钟前
[leetcode] 二分算法
算法·leetcode·职场和发展
JK0x0713 分钟前
代码随想录算法训练营 Day61 图论ⅩⅠ Floyd A※ 最短路径算法
算法·图论
Mi Manchi2615 分钟前
力扣热题100之对称二叉树
python·算法·leetcode
緈福的街口16 分钟前
【leetcode】459.重复的子字符串
linux·算法·leetcode
Mintopia17 分钟前
当像素跳起光影圆舞曲:用 JavaScript 解锁实时全局光照的魔法
前端·javascript·计算机图形学
温正实21 分钟前
spring boot 实现接入 deepseek gpt接口 流式输出
javascript·spring boot·gpt
xjf771138 分钟前
前端框架性能综合评估报告:Solid.js、React、Vue与TypeDOM的多维度对比
vue.js·react.js·typescript·前端框架·typedom·solidjs