74. 搜索二维矩阵(JS实现)

JS实现简单的二维矩阵乘积运算 本文实例讲述了JS实现简单的二维矩阵乘积运算方法。分享给大家供大家参考,具体如下: Console控制台截图如下: (上图为输出结果直接上代码了(A矩阵可以乘以B矩阵的前提是A矩阵的列数等于B矩阵的行数) <!DOCTYPE html> <html> <head> <title>demo</title> </head> <body> </body> [removed] function log(msg) { console.log(msg); } /** * 可视化的打印出 立即下载

1 题目

编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:
每行中的整数从左到右按升序排列。
每行的第一个整数大于前一行的最后一个整数。
示例 1:
输入:
matrix = [
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
target = 3
输出: true
示例 2:
输入:
matrix = [
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
target = 13
输出: false

2 思路

这道题就是用二分查找先找到在哪一行,然后在这一行内继续二分查找

3 代码

/**
 * @param {number[][]} matrix
 * @param {number} target
 * @return {boolean}
 */
var searchMatrix = function(matrix, target) {
    let m = matrix.length;
    if (m === 0) return false;
    let n = matrix[0].length;

    let low = 0;
    let high = m - 1;
    let mid;
    let row = -1;

    while(low <= high) {
        mid = Math.floor((low + high) / 2);

        if (matrix[mid][0] > target) {
            high = mid - 1;
        } else if (matrix[mid][n - 1] < target) {
            low = mid + 1;
        } else {
            row = mid;
            break;
        }
    }

    if (row < 0) return false;

    low = 0;
    high = n - 1;

    while(low <= high) {
        mid = Math.floor((low + high) / 2);

        if (matrix[row][mid] > target) {
            high = mid - 1;
        } else if (matrix[row][mid] < target) {
            low = mid + 1;
        } else {
            return true;
        }
    }

    return false;
};
【Flink】Flink 消费一段时间1万多条数据就卡死 我们有个现场环境,发现了奇怪的现象,就是每次启动任务后,消费1万多条数据后就会卡死,然后整个流不消费,也不往下输出,看起来卡死了一样。缺图这里面出现的网闸原因导致的,但是经过我们写了一个简单的kafka消费程序,然后在出问题的节点上消费数据,实际排查,发现不是这个问题。这个问题,发现也不是,这段时间没有进行过kafka数据清理。里面的问题。因为这个问题,我们后面的代码刻意规范了,不这样操作。后来是在没办法了,然后我们dump了线程,发现有如下代码。 阅读详情

相关推荐

告别屏幕适配焦虑:用AndroidAutoSize 1.2.1搞定多尺寸设备(附AndroidX兼容方案)

本文详细介绍了AndroidAutoSize 1.2.1在屏幕适配中的应用,帮助开发者高效解决多尺寸设备适配问题。通过动态计算机制,AutoSize显著提升了UI一致性和开发效率,特别适合处理横竖屏切换、折叠屏等复杂场景。文章还提供了AndroidX兼容方案和性能优化建议,是Android开发者的实用指南。

weixin_42535461的博客 190

【算法】搜索二维矩阵 暴力解法&二分法 4种语言

编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 1: 输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3 输出:true 示例 2: 输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13 输出:false 提示: m ==.

weixin_43779957的博客 366

超详细!新手必看STM32-DMA配置与实验(串口使用DMA发送数据)

DMA就是:直接存储器访问。DMA传输数据从一个地址空间复制到另一个地址空间,提供在外设和存储器或者存储器和存储器之间的高速数据传输。

qq_1033275663的博客 2万+

js 创建一个二维数组

二维数组的实现,及使用过程中需要注意的点

weixin_42353499的博客 4150

一步步教你离线安装vsftpd并配置FTP服务

在安装vsftpd之前,需确保系统更新至最新版本,并检查防火墙配置以允许FTP流量。安装过程涉及使用包管理器(如apt-get或yum)下载vsftpd及其依赖包,特别是在离线环境中,需先下载所有相关包并传输到目标机器。安装完成后,通过命令验证安装并启动服务。配置vsftpd包括编辑配置文件以设置访问权限和安全性参数,如匿名访问和本地用户访问。此外,需配置防火墙开放FTP端口,并通过FTP客户端测试服务。最后,建议进行安全配置,如禁用匿名访问和配置SSL/TLS加密,并设置日志记录以监控服务状态。

a_join的博客 2485

Anaconda创建python环境常见命令

Anaconda功能庞大,其可以理解为一个工具,也是一个可执行命令。Anaconda可以创建多个python环境,且python环境间相互独立。

m0_59405106的博客 1万+

【JS】 搜索二维矩阵 #数组 #二分查找

编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 1: 输入: matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ] target = 3 输出: true 示例 2: 输入: matrix = [ ...

大白菜啊 551

多核系统核间通信(IPC)设计:从硬件机制到软件实现

在多核处理器与嵌入式系统设计中,核间通信(IPC)是实现计算资源协同工作的核心技术。其原理基于共享内存、硬件邮箱与中断等底层硬件机制,通过构建结构化的消息传递通道,实现核间高效、可靠的数据交换。该技术的核心价值在于打破多核间的壁垒,将分散的计算单元整合为有机整体,从而显著提升系统整体性能与响应能力。在工程实践中,IPC广泛应用于智能座舱、边缘AI网关、实时控制系统等场景,用于处理如仪表显示、AI推理、实时控制等复杂任务。本文聚焦于基于共享内存与VRING的消息队列实现,深入剖析缓存一致性、内存屏障等关键问题

weixin_27006759的博客 597

如何做一个简单的面向对象程序

理解 属性=成员变量 方法=成员方法 分为三步 第一步 Java类及类的成员 1.属性和方法 第二步 Java类的实例化 即创建类的对象 第三步 调用对象的结构;属性和方法 调用属性:“对象.属性" 调用方法:“对象.方法” 注意:如果创建一个类的多个对象,则每个对象都独立的拥有一套类的属性(非static) 意味着:如果我们修改属性a的值则不影响另外一个对象属性a的值 package day01; //测试类 public class PersonTset { public static

qq_48104836的博客 557

【UE5】多用户协同编辑实战:从配置到实时协作

本文详细介绍了在虚幻引擎5中配置和使用多用户协同编辑功能的完整流程。从启用Multi-User Editing插件、配置UDP Messaging网络通信,到启动服务器、创建会话并实现实时协作,提供了从环境准备到实战协作的清晰指南。文章还分享了资产同步、场景分批、对象锁定等实用技巧,并强调了网络配置与版本一致性等关键避坑点,旨在帮助中小型团队提升关卡设计和原型开发的协作效率。

weixin_29001683的博客 267

Arduino Uno R3开发板系列学习教程(番外篇:USB驱动安装与疑难排解)

本文详细介绍了Arduino Uno R3开发板USB驱动安装与疑难排解的完整指南,特别针对国产克隆版常见的CH340驱动问题提供解决方案。从识别开发板类型到Windows/Mac系统驱动安装步骤,再到常见问题排查与高级排错技巧,帮助开发者快速解决连接问题,确保程序烧录顺利进行。

weixin_29182481的博客 583

js 搜索二维矩阵 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。 给

wen_binobject的博客 607

10、现代统计方法:趋势面分析、薄板样条与广义线性模型

本文系统介绍了空间预测建模中的三种现代统计方法:趋势面分析(TSA)、薄板样条(TPS)和广义线性模型(GLM)。详细阐述了每种方法的原理、实现步骤、参数优化与预测评估,并结合R语言代码示例展示了在实际数据中的应用。文章还提供了方法对比流程图与土壤湿度预测案例,帮助读者根据数据特征选择合适模型,提升空间预测的准确性与可靠性。

play7的博客 157

javascript实现剑指offer——1.二维数组中的查找/74. 搜索二维矩阵

描述: 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 1: 输入: matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ] target = 3 输出: true 思路: 使用Arra...

敲敲的博客 230

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

JavaScript——leetcode74 搜索二维矩阵

JavaScript——leetcode74 搜索二维矩阵 题目描述 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3 输出:true 输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13

Teresa的前端海底乐园 220

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Leetcode 143 搜索插入位置 | 搜索二维矩阵

这道题的核心是二分查找,必须保证时间复杂度 O (log n),因此不能用遍历(遍历的时间复杂度是 O (n))。二分查找的关键:正确计算mid避免溢出,通过调整leftright缩小查找范围,循环结束后left就是插入位置。无需单独处理 “数组为空”“目标值在开头 / 结尾” 的边界情况,核心逻辑已覆盖所有场景(比如target比所有元素大时,left最终等于数组长度,正好是插入末尾的位置)。核心错误。

im_AMBER的博客 374

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

74-搜索二维矩阵

通过以上分析,我们可以得出结论:该算法利用了矩阵的结构特性,有效地查找目标值。它的时间复杂度为 O(m + n),空间复杂度为 O(1),在性能上非常高效。如果你还有其他问题或需要进一步的解释,随时告诉我!

qq_46060468的博客 1101

[JavaScript 刷题] 二分搜索 - 搜索二维矩阵, leetcode 74

github repo 地址: https://github.com/GoldenaArcher/js_leetcode,Github 的目录 大概 会更新的更勤快一些。题目地址:74. Search a 2D Matrix如下:题目给的提示应该已经挺明显的了,首先所有的数字都是由左到右进行了排序;其次每行第一个数字永远比上一列的数字小。这样就可以把一个矩阵始做一个数组进行二分搜索,如:其实就可以视作一个数组:将数组扁平化是一个方法,不过这样就会需要额外的空间和时间去进行操作。另一种方法是通过使用 除 和

GoldenaArcher的博客 376

leetcode 第74题搜索二维矩阵

二分法查找的话,总是会有一些细节没有看出来。 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/search-a-2d-matrix 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 class Solution { public boolean searchMa

spades_seven的博客 261

74. 搜索二维矩阵

74. 搜索二维矩阵 原始题目链接:https://leetcode-cn.com/problems/search-a-2d-matrix/ 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 1: 输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3 输出:true 示例 2: 输入:matrix = [[1,

u013243296的博客 267

[C++&Rust]LeetCode No.74 搜索二维矩阵(每日一题)

大家好! 今天给大家带来的是第74题搜索二维矩阵 ​传送门: https://leetcode-cn.com/problems/search-a-2d-matrix/ 这个题其实一看就知道是二分,因为他都把升序写到脸上了,关键是二分的方法. 有两种方法来进行二分查找: 先对行进行查找,定位到行,再在行内进行查找,两次二分 直接将所有的数据看成一个整体(即假想将所有数据拉平),一次二分 这两种方法其实没有什么本质复杂度的区别,都是O(lg(m*n)),而第一种方法看起来就复杂很多,因为还要判断存不存在这

SGCTSGCT的博客 313

LeetCode:搜索二维矩阵【74】

LeetCode:搜索二维矩阵【74】 题目描述 编写一个高效的算法来判断mxn矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例1: 输入: matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50...

weixin_30480651的博客 87

算法---LeetCode 74. 搜索二维矩阵

1. 题目 原题链接 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 1: 输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3 输出:true 示例 2: 输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13 输出:false 提示:

知北行的博客 333

Leetcode240. 搜索二维矩阵 II

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。在搜索的过程中,如果我们超出了矩阵的边界,那么说明矩阵中不存在。在每一步的搜索过程中,如果我们位于位置。为右上角的矩阵中进行搜索,即行的范围为。每行的元素从左到右升序排列。每列的元素从上到下升序排列。的左下角为左下角、以。...

会流泪de鱼的博客 262

LeetCode热题100--74. 搜索二维矩阵--中等

摘要:该算法在有序矩阵中高效查找目标值。矩阵满足每行递增且每行首元素大于前一行末元素。算法从矩阵右上角开始,若当前元素等于目标值则返回true;若小于目标值则向下移动一行(排除该行);若大于目标值则向左移动一列(排除该列)。时间复杂度为O(m+n),空间复杂度O(1),适用于行列递增的二维矩阵搜索问题。

2301_80071187的博客 430

【leetcode】74 搜索二维矩阵(二分查找)

题目链接: 题目描述 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 1: 输入: matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ] target = 3 输出: true 示例 2...

zjwreal 149
上一篇: 73. 矩阵置零(JS实现)
下一篇: 77. 组合(JS实现)
PAT-python-zjw
博客等级 码龄10年 381粉丝 408原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值