240. 搜索二维矩阵 II

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

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

方法一:二分查找

思路:在暴力的基础上,用二分查找降低时间复杂度

复制代码
/**
 * @param {number[][]} matrix
 * @param {number} target
 * @return {boolean}
 */
var searchMatrix = function(matrix, target) {
    //二分查找
    for(const row of matrix){
        const index = search(row,target);
        if(index>=0){
            return true;
        }
    }
    return false;
};

const search = (nums,target)=>{
    let low = 0,high = nums.length-1;
    while(low<=high){
        const mid = Math.floor((high+low)/2);
        const num = nums[mid];
        if(num===target){
            return mid;
        }else if(target>num){
            low = mid+1;
        }else{
            high = mid-1;
        }
    }
    return -1;
}

方法二:Z形查找

思路:从矩阵的右上角开始查找,以矩阵左下角构建新的查找矩阵,分两种情况,一是右上角元素大于target,由于列递增,所以列的索引减一,二是右上角元素小于target,由于行递增,所以行索引加一。

复制代码
/**
 * @param {number[][]} matrix
 * @param {number} target
 * @return {boolean}
 */
var searchMatrix = function(matrix, target) {

    if(matrix.length===0||matrix[0].length===0){
        return false;
    }

    let row = 0;
    let colum = matrix[0].length-1;

    while(row<matrix.length&&0<=colum){
        if(matrix[row][colum]>target){
            colum--;
        }else if(matrix[row][colum]<target){
            row++;
        }else{
            return true;
        }
    }
    return false;
};
相关推荐
智驱力人工智能3 分钟前
货车走快车道检测 高速公路安全治理的工程实践与价值闭环 高速公路货车占用小客车道抓拍系统 城市快速路货车违规占道AI识别
人工智能·opencv·算法·安全·yolo·目标检测·边缘计算
喵手13 分钟前
Python爬虫实战:电商实体消歧完整实战 - 从混乱店铺名到标准化知识库的工程化实现,一文带你搞定!
爬虫·python·算法·爬虫实战·零基础python爬虫教学·同名实体消除·从混乱店铺名到标准化知识库
weixin_4521595517 分钟前
C++与Java性能对比
开发语言·c++·算法
80530单词突击赢18 分钟前
C++哈希表实现:开散列与闭散列详解
算法·哈希算法·散列表
Timmylyx051821 分钟前
类欧几里得学习笔记
笔记·学习·算法
wangluoqi23 分钟前
26.2.2练习总结
算法
2301_7657031425 分钟前
C++中的工厂模式实战
开发语言·c++·算法
what丶k1 小时前
深度解析:以Kafka为例,消息队列消费幂等性的实现方案与生产实践
java·数据结构·kafka
星火开发设计1 小时前
C++ 输入输出流:cin 与 cout 的基础用法
java·开发语言·c++·学习·算法·编程·知识
We་ct1 小时前
LeetCode 289. 生命游戏:题解+优化,从基础到原地最优
前端·算法·leetcode·矩阵·typescript