74. 搜索二维矩阵【二分法】【C++】

题目描述

搜索二维矩阵
给你一个满足下述两条属性的 m x n 整数矩阵:
每行中的整数从左到右按非严格递增顺序排列。
每行的第一个整数大于前一行的最后一个整数。
给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。
示例 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 == matrix.length
n == matrix[i].length
1 <= m, n <= 100
-104 <= matrix[i][j], target <= 104

思路

本题是二分搜索的变形,常规的二分搜索是一个一维数组,而本题是一个二维数组,但是依然可以使用一维数组的思路,关键点:将二维坐标与一位坐标进行转化,比如:34的二维数组其实可以看成121的一维数组,最中间的数mid是5((0+12-1) / 2 == 5),对应二维数组行数1(5 / 4==1),列数5(5 % 4 == 1)。

代码:

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int row = matrix.size();  //行大小int col = matrix[0].size();    //列大小int len = row * col;    //一维数组长度int left = 0;     //左右指针int right = len - 1;  //左闭右闭while (left <= right) { int mid_old = (right - left) / 2 + left;  //一维数组的坐标int mid_x = mid_old / col;     //  计算二维数组的坐标int mid_y = mid_old % col; if (matrix[mid_x][mid_y] < target) {left = mid_old + 1;}else if (matrix[mid_x][mid_y] > target) {right = mid_old - 1;}else {return true;}}return false;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/867014.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CTF入门知识点

CTF知识点 md5函数 <?php$a 123;echo md5($a,true); ?> 括号中true显示输出二进制 替换成false显示输出十六进制绕过 ffifdyop 这个字符串被 md5 哈希了之后会变成 276f722736c95d99e921722cf9ed621c&#xff0c;这个字符串前几位刚好是 or 6 而 Mysql 刚好又会把 …

【向量数据库|一文全面了解向量数据库的基本概念、原理、算法、选型】

文末有福利&#xff01; 向量数据库的原理和实现&#xff0c;包括向量数据库的基本概念、相似性搜索算法、相似性测量算法、过滤算法和向量数据库的选型等等。向量数据库是崭新的领域&#xff0c;目前大部分向量数据库公司的估值乘着 AI 和 GPT 的东风从而飞速的增长&#xff…

【国产开源可视化引擎Meta2d.js】拖拽

Meta2d.js已监听拖拽事件&#xff0c;支持接收一个有效的图元Json数据&#xff0c;在画布创建一个图元对象。 图形库拖拽 1. 创建图形库工具栏 创建图形库工具栏 html 元素&#xff0c;绑定拖拽事件或 touch 事件 <div v-for"item in list" draggable"tr…

Java版本迭代的过程(Java面经)

Java 5: 泛型与注解 泛型&#xff1a;使得Web应用可以编写更加类型安全的代码&#xff0c;特别是在处理各种数据结构时&#xff0c;如集合框架的使用。注解&#xff1a;极大地简化了配置管理&#xff0c;Spring框架的崛起得益于Java 5的注解支持&#xff0c;使得依赖注入和AOP…

白骑士的C语言教学高级篇 3.5 性能优化

性能优化是软件开发中非常重要的一个环节。优化程序的内存使用和运行时间可以显著提升软件的效率和用户体验。本节将介绍内存优化、时间复杂度与空间复杂度的概念&#xff0c;以及一些常见的代码优化技巧。 内存优化 内存优化主要关注如何合理地分配和使用内存&#xff0c;以减…

C++ 智能指针使用不当导致内存泄漏问题

shared_ptr相互嵌套导致循环引用 代码示例 #include <iostream> #include <memory> using namespace std;class B;class A { public:std::shared_ptr<B> b_ptr;~A() { std::cout << "A destroyed\n"; } };class B { public:std::shared_pt…

【代码随想录——图论——岛屿问题】

1.岛屿数量 https://kamacoder.com/problempage.php?pid1171 1.1 深度优先搜索 package mainimport "fmt"var direction [][]int{{0, 1}, {0, -1}, {1, 0}, {-1, 0}}func main() {var M, N intfmt.Scanln(&N, &M)sea : make([][]int, N)visited : make…

LabVIEW图像分段线性映射

介绍了如何使用LabVIEW对图像进行分段线性映射处理&#xff0c;通过对特定灰度值区间进行不同的线性映射调整&#xff0c;以优化图像的显示效果。案例中详细展示了如何配置和使用LabVIEW中的图像处理工具&#xff0c;包括设置分段区间、计算映射参数和应用映射函数等步骤。 实…

【论文阅读】VASA-1: Lifelike Audio-Driven Talking FacesGenerated in Real Time

整体框架。不直接生成视频帧&#xff0c;而是在潜在空间中生成整体面部动态和头部运动&#xff0c;条件是音频和其他信号。给定这些运动潜在编码&#xff0c;通过面部解码器生成视频帧&#xff0c;还接受从输入图像中提取的外观和身份特征作为输入。 构建了一个面部潜在空间并…

Mac系统清理工具:您的数字生活杂务处理师

有没有觉得您的Mac有时候像是需要一个好的春季大扫除一样&#xff1f;随着我们不断使用电脑&#xff0c;各种不需要的文件、老旧的数据和忘记的安装包就像家里的灰尘一样慢慢积累。幸运的是&#xff0c;有了一些出色的Mac系统清理工具&#xff0c;我们可以轻松将这些数字灰尘拂…

react v18——env环境变量配置、打包配置(craco)

一、env文件 像其他项目一样&#xff0c;在根目录新建 .env 文件&#xff0c;如 .env.development REACT_APP_ENVdevelopment REACT_APP_API_BASE_URLhttp://192.168.2.107:31000REACT_APP_API_BASE_URL 可以用在 axios 封装的位置&#xff0c;作为 baseURL const instance …

Wireshark网络抓包工具入门指南

目录 引言 安装抓包工具 抓包基础概念 抓包步骤 流程 抓包工具头的分析 14.3 以太网的完整帧格式 粘包与拆包现象解析及解决方案 发生原因 解决方案 14.3.1以太网头 14.3.2 IP头 14.3.3 UDP头 14.3.4 TCP头 引言 Wireshark是一款功能强大的开源网络协议分析器&am…

RAG :vector embeddings 怎么关联使用

构建检索增强生成&#xff08;RAG&#xff09;系统的关键因素之一&#xff1a;向量嵌入( vector embeddings )。这些元素是基本的技术和转换工具&#xff0c;使 RAG 系统在某些方面能够以类似于人类理解的形式处理语言。 embedding 提供了一种将文本信息转换为数字数据的方法。…

MFC常见问题解决

文章目录 1. 单文档程序初始化显示设置问题解决方案 1. 单文档程序初始化显示设置 问题 在Microsoft Foundation Classes (MFC) 中&#xff0c;单文档应用程序&#xff08;SDI&#xff09;的初始化时默认并不设置为最大显示。但你可以通过编程方式在程序启动时将其设置为全屏…

微信小程序的校园点餐系统-计算机毕业设计源码56979

摘 要 近年来&#xff0c;随着移动互联网的迅猛发展&#xff0c;微信小程序作为一种轻量级应用形式逐渐受到人们的关注和喜爱。在此背景下&#xff0c;各行各业开始向微信小程序上线他们的服务&#xff0c;其中包括餐饮行业&#xff0c;在校园内&#xff0c;学生、教职工和访客…

Arthas实战(5)- 项目性能调优

1、接口耗时查询&#xff1a;trace命令 trace 命令能主动搜索 class-pattern&#xff0f;method-pattern 对应的方法调用路径&#xff0c;渲染和统计整个调用链路上的所有性能开销和追踪调用链路。 1.1 准备测试应用 新建一个 SpringBoot 应用&#xff0c;写一耗时久的代码&…

能否免费使用Adobe XD?

Adobe XD不是免费的。Adobe 目前XD采用订阅模式&#xff0c;提供订阅模式 7 每天试用期结束后需要付费购买&#xff0c;具体价格根据不同的订阅计划确定&#xff0c;包括每月购买&#xff0c;包括 9.99 美元或每月 99.99 美元&#xff0c;或者选择购买Adobe CreativeCloud整体订…

内核错误定位

内核打印出如下&#xff1a; 在代码目录输入&#xff1a; ./prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gdb kernel/vmlinux 进入gdb 命令模式 输入 l *(rk628_csi_probe0xf0) 能定位到出现问题地方。 最后就…

android iconfont带图标的图文并茂的一种实现

android实现图文并茂方法很多。 这里针对&#xff0c;仅本地图标&#xff0c;需要对齐&#xff0c;任意位置&#xff0c;兼容换行导致后面空白的问题做的一种方案。 www.iconfont.cn&#xff0c;注册&#xff1b; 上传svg的icon&#xff1b; 下载项目得到iconfont.ttf&#xf…

AI绘画Stable Diffusion【图生图教程】:图片高清修复的三种方案详解,你一定能用上!(附资料)

大家好&#xff0c;我是画画的小强 今天给大家分享一下用AI绘画Stable Diffusion 进行 高清修复&#xff08;Hi-Res Fix&#xff09;&#xff0c;这是用于提升图像分辨率和细节的技术。在生成图像时&#xff0c;初始的低分辨率图像会通过放大算法和细节增强技术被转换为高分辨…