力扣74. 搜索二维矩阵(二分查找)

Problem: 74. 搜索二维矩阵

文章目录

  • 题目描述
  • 思路
  • 复杂度
  • Code

题目描述

在这里插入图片描述在这里插入图片描述

思路

思路1:映射为一维数组二分查找

1.由于题目矩阵中的元素整体是升序的,我们可以将其放置在一个大小为 m × n m \times n m×n的一维数组array中进行二分查找
2.对应的映射关系是array[mid] == mar[mid / n][mid % n]

思路2:直接在二维矩阵上进行二分查找

1.先对二维矩阵的第一列进行二分查找,找到小于等于target的一个数,讲此行标记为rowInd
2.从rowInd开始再进行二分查找

复杂度

思路1:
时间复杂度:

O ( l o g m n ) O(logmn) O(logmn)

空间复杂度:

O ( m n ) O(mn) O(mn)

思路2:
时间复杂度:

O ( l o g m n ) O(logmn) O(logmn)

空间复杂度:

O ( 1 ) O(1) O(1)

Code

思路1:

class Solution {
public:/*** Binary Search* * @param matrix Given array* @param target Given target number* @return bool*/bool searchMatrix(vector<vector<int>> &matrix, int target) {int row = matrix.size();if (row == 0) {return false;}int col = matrix[0].size();int left = 0;int right = row * col - 1;vector<int> array(row * col);while (left <= right) {int mid = left + (right - left) / 2;if (matrix[mid / col][mid % col] == target) {return true;} else if (matrix[mid / col][mid % col] > target) {right = mid - 1;} else if (matrix[mid / col][mid % col] < target) {left = mid + 1;}}return false;}
};

思路2:

class Solution {public:/*** Binary Search** @param matrix Given array* @param target Given target number* @return bool*/bool searchMatrix(vector<vector<int>>& matrix, int target) {int row = matrix.size();if (row == 0) {return false;}int col = matrix[0].size();int left = 0;int right = row - 1;while (left <= right) {int mid = left + (right - left) / 2;if (matrix[mid][0] == target) {return true;} else if (matrix[mid][0] > target) {right = mid - 1;} else if (matrix[mid][0] < target) {left = mid + 1;}}// Check out of boundsif (right < 0) {return false;}int rowIdx = right;left = 0;right = col - 1;while (left <= right) {int mid = left + (right - left) / 2;if (matrix[rowIdx][mid] == target) {return true;} else if (matrix[rowIdx][mid] > target) {right = mid - 1;} else if (matrix[rowIdx][mid] < target) {left = mid + 1;}}return false;}};

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

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

相关文章

NACOS在Windows和Linux下的安装教程

目录 1、Windows安装 1.1、下载安装包 1.2、解压 1.3、端口配置 1.4、启动 1.5、访问 2、Linux安装 2.1、安装JDK 2.2、上传安装包 2.3、解压 2.4、端口配置 2.5、启动 3、Nacos的依赖 1、Windows安装 开发阶段采用单机安装即可。 1.1、下载安装包 在Nacos的Git…

Vue+SpringBoot打造图书借阅系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 登陆注册模块2.2 图书管理模块2.3 图书评论模块2.4 图书预定模块2.5 图书资讯模块 三、系统设计3.1 系统结构设计3.1.1登陆注册模块的结构设计3.1.2图书管理模块的结构设计3.1.3图书评论模块的结构设计3.1.4图书预定模块…

clickhouse 随心所欲的聚合模型-AggregatingMergeTree

clickhouse 强大的 MergeTree 系列引擎令人信服&#xff0c;其 ReplacingMergeTree、SummingMergeTree 在数据唯一性和汇总场景中表现非凡。但你是否还有保留最小(大)、平均等预聚合需求&#xff0c;甚至在一个模型中既有唯一性语意也有汇总、最小、最大、平均值语意该如何处理…

Spring-静态代理VS动态代理/实现代理ProxyFactory

文章目录 静态代理VS动态代理Spring实现代理ProxyFactory 工作中遇到问题整理动态代理异常com.sun.proxy.$Proxy0 cannot be cast to 静态代理VS动态代理 静态代理VS动态代理 参考URL: https://blog.csdn.net/qq_25881443/article/details/103245938 【java项目实战】代理模式…

【C语言】剖析qsort函数的实现原理

主页&#xff1a;17_Kevin-CSDN博客 专栏&#xff1a;《C语言》 本文将从回调函数&#xff0c;qsort函数的应用&#xff0c;qsort函数的实现原理三个方面进行讲解&#xff0c;请自行跳转至相对位置进行阅读~ 目录 回调函数 qsort函数的应用 qsort函数实现原理 回调函数 什…

mysql主从库Slave_SQL_Running: No问题经验分享

最近在创建mysql主从库的时候&#xff0c;遇到一个问题。执行 mysql> SHOW SLAVE STATUS\G结果显示 Slave_IO_Running: Yes Slave_SQL_Running: No 很是苦恼&#xff0c;查询了很久没有解决 执行 mysql> SELECT * FROM performance_schema.replication_applier_status_…

独立游戏《星尘异变》UE5 C++程序开发日志1——项目与代码管理

写在前面&#xff1a;本日志系列将会向大家介绍在《星尘异变》这款模拟经营游戏&#xff0c;在开发时用到的与C相关的泛用代码与算法&#xff0c;主要记录UE5C与原生C的用法区别&#xff0c;以及遇到的问题和解决办法&#xff0c;因为这是我本人从ACM退役以后第一个从头开始的项…

代码随想录算法训练营第五十天 | 买股票2

目录 买卖股票的最佳时机III买卖股票的最佳时机IV LeetCode 123.买卖股票的最佳时机III LeetCode 123.买卖股票的最佳时机IV 买卖股票的最佳时机III 给定一个数组&#xff0c;它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。…

牛客周赛 Round 35(A,B,C,D,E,F,G)

这场简单&#xff0c;甚至赛时90分钟不到就AK了。比赛链接&#xff0c;队友题解友链 刚入住学校监狱&#xff0c;很不适应&#xff0c;最近难受的要死&#xff0c;加上最近几场CF打的都不顺利&#xff0c;san值要爆掉了&#xff0c;只能慢慢补题了。 这场C是个滑动窗口&#…

冒泡排序 和 qsort排序

目录 冒泡排序 冒泡排序部分 输出函数部分 主函数部分 总代码 控制台输出显示 总代码解释 冒泡排序优化 冒泡排序 主函数 总代码 代码优化解释 qsort 排序 qsort 的介绍 使用qsort排序整型数据 使用qsort排序结构数据 冒泡排序 首先&#xff0c;我先介绍我的冒泡…

模糊搜索小案例

C#窗体实现数据录入与模糊搜索小案例 记录一下 主要代码 private void button1_Click(object sender, EventArgs e){string name textBox1.Text;string hometown textBox4.Text;string school textBox6.Text;string sex textBox5.Text;string lat textBox3.Text;string …

c#打印BarTend标签提示:具名数据源没有cuckoo*具名数据(解决)

c#打印BarTend标签提示&#xff1a;具名数据源没有cuckoo*具名数据&#xff08;解决&#xff09; 今天咕咕更新打印模板的时候遇到的问题&#xff0c;就是在模版中配置了字段名&#xff0c;但是启动c#应用&#xff0c;后端发送json数据打印的时候c#报错提示&#xff0c;没有在…

python 小游戏《2048》字符版非图形界面

参考链接&#xff1a; 闲谈2048小游戏和数组的旋转及翻转和转置 目录 2048 一、方阵类 二、随机插入1或2 三、 合并和递增 四、 判断和移动 五、 键盘控制 完整源代码 玩法过程 2048 上回说到2048小游戏中数组的各种旋转、翻转的方法&#xff0c;就是为代码编程作准…

第十六天-爬虫selenium库

目录 1.介绍 2.使用 selenium 1.安装 2.使用 1.测试打开网页&#xff0c;抓取雷速体育日职乙信息 2.通过xpath查找 3.输入文本框内容 send_keys 4.点击事件 click 5.获取网页源码&#xff1a; 6.获取cookies 7.seleniumt提供元素定位方式&#xff1a;8种 8.控制浏览…

Spring Security OAuth2如何自定义返回的 Token 信息

文章目录 Spring Security OAuth2如何自定义返回的 Token 信息定制不透明令牌的信息Springsecurity-oauth2之TokenEndPoint参考Spring Security OAuth2如何自定义返回的 Token 信息 Spring Boot+OAuth2,如何自定义返回的 Token 信息? 参考URL: https://www.jianshu.com/p/b7…

【Go】指针的声明和初始化

package mainimport "fmt"func main() {// 声明一个整数变量var num int 42// 声明一个指向整数的指针变量&#xff0c;并将其初始化为指向整数变量的地址var ptr *int &num// 打印整数变量的值和指针变量的值&#xff08;即整数变量的地址&#xff09;fmt.Pri…

2024第24届中国国际工业博览会新能源与智能网联汽车展电池制造展馆

2024第24届中国国际工业博览会新能源与智能网联汽车展电池制造展馆 时间&#xff1a;2024年9月24日-28日 地点&#xff1a;国家会展中心&#xff08;上海&#xff09; 主办单位&#xff1a;工业和信息化部、国家发展和改革委员会、科学技术部、商务部、中国科学院、中国工程…

【游记】GDOI2024

GDOI2024游记 老年退役选手。NOIP 218 分&#xff0c;GDOI 纯纯旅游。 Day -5 周日返校&#xff0c;开始停课。 开始攒 rp。 Day -4 模拟赛&#xff0c;犯困&#xff0c;啥也不会。 下午打球。 Day -3 模拟赛&#xff0c;不困&#xff0c;还是啥也不会。 下午打球。 …

CSS3单独制作移动端页面布局方式(流式布局、flex弹性布局)

目录 1. 流式布局(百分比布局)2. flex弹性布局(强烈推荐)2.1 介绍2.2 Flex容器常见属性2.2.1 flex-direction2.2.2 justify-content2.2.3 flex-wrap2.2.4 align-items2.2.5 align-content2.2.6 flex-flow 2.3 Flex项目常见属性2.3.1 flex2.3.2 align-self和order 1. 流式布局(百…

银河麒麟之Workstation安装

一、VMware Workstation简介 VMware Workstation是一款由VMware公司开发的虚拟化软件&#xff0c;它允许用户在一台物理计算机上运行多个操作系统&#xff0c;并在每个操作系统中运行多个虚拟机。VMware Workstation提供了一个可视化的用户界面&#xff0c;使用户可以轻松创建、…