首页 > 其他分享 >搜索二维矩阵

搜索二维矩阵

时间:2023-02-04 15:22:05浏览次数:47  
标签:matrix mayBeInArray 矩阵 else 二维 搜索 outerMidIdx target

编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:

每行中的整数从左到右按升序排列。
每行的第一个整数大于前一行的最后一个整数。

/**
 * @param {number[][]} matrix
 * @param {number} target
 * @return {boolean}
 */
const searchMatrix = (matrix, target) => {
    let mayBeInArray = []
    let outerStartIdx = 0, outerEndIdx = matrix.length - 1;
    while(outerStartIdx <= outerEndIdx){
        if(outerStartIdx === outerEndIdx){
            mayBeInArray = matrix[outerStartIdx]
            break
        }
        let  outerMidIdx = Math.floor((outerStartIdx + outerEndIdx) / 2)
        if(matrix[outerMidIdx][0] > target){
            outerEndIdx = --outerMidIdx
        }else if(matrix[outerMidIdx][matrix[outerMidIdx].length - 1] < target){
            outerStartIdx = ++outerMidIdx
        }else{
            mayBeInArray = matrix[outerMidIdx]
            break
        }
    }
    let innerStartIdx = 0, innerEndIdx = mayBeInArray.length - 1;
    while(innerStartIdx <= innerEndIdx){
        let  innerMidIdx = Math.floor((innerStartIdx + innerEndIdx) / 2)
        if(mayBeInArray[innerMidIdx] > target){
            innerEndIdx = --innerMidIdx
        }else if(mayBeInArray[innerMidIdx] < target){
            innerStartIdx = ++innerMidIdx 
        }else{
            return true 
        }
    }
    return false
};

  

标签:matrix,mayBeInArray,矩阵,else,二维,搜索,outerMidIdx,target
From: https://www.cnblogs.com/zhenjianyu/p/17091551.html

相关文章

  • 【C语言 数据结构】数组与对称矩阵的压缩存储
    文章目录​​数组的定义​​​​数组的顺序表示和实现​​​​顺序表中查找和修改数组元素​​​​矩阵的压缩存储​​​​特殊矩阵​​​​稀疏矩阵​​数组的定义提到数组......
  • 二叉搜索树
    二叉搜索树@目录二叉搜索树1.定义2.求某个节点的后继概念:比当前节点大的最小节点3.求节点的前驱4.删除节点LeetCode701.二叉搜索树中的插入操作(二叉搜索树查找插入......
  • 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先
    530.二叉搜索树的最小绝对差二叉搜索树中序遍历/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNod......
  • 力扣98 验证二叉搜索树
    题目:给你一个二叉树的根节点root,判断其是否是一个有效的二叉搜索树。有效二叉搜索树定义如下:节点的左子树只包含小于当前节点的数。节点的右子树只包含......
  • 【Matlab学习2.5】稀疏矩阵
    矩阵的存储方式完全存储方式:将矩阵的全部元素按列存储。稀疏存储方式:只存储矩阵的非零元素的值及其位置,即行号和列号。注意,采用稀疏存储方式时,矩阵元素的存储顺序并没有......
  • 力扣700 二叉搜索树中的搜索
    题目:给定二叉搜索树(BST)的根节点root和一个整数值val。你需要在BST中找到节点值等于val的节点。返回以该节点为根的子树。如果节点不存在,则返回null。示例:......
  • WPF使用AvalonEdit实现代码高亮显示、搜索、替换功能
    WPF使用AvalonEdit实现代码高亮显示、搜索、替换功能很多工程软件拥有自己定义的脚本语言,作为程序员用惯了具有高亮显示和智能提示功能的编辑器,所以针对特定的脚本自己开......
  • 二维码关注公众号注册登录(登录,注册逻辑没写,请自行处理)
    流程生成推广二维码,上面带参数(场景值)。用户扫描带场景值二维码时,可能推送以下两种事件:​ 如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件......
  • 矩阵分解的梯度计算
    https://homepages.inf.ed.ac.uk/imurray2/pub/16choldiff/choldiff.pdf......
  • BM34 判断是不是二叉搜索树
    思路:对于这种dfs思想的算法,分三步走:先判断空节点再判断左子树和右子树根据左子树和右子树返回的信息以及当前节点的信息,返回最终的结果这里有一个技巧:用一个全局变......