【练习】【二分】力扣热题100 74. 搜索二维矩阵

server/2025/2/23 1:37:33/

题目

给你一个满足下述两条属性的 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

来源:力扣热题100 74. 搜索二维矩阵


思路(注意事项)


纯代码

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int m = matrix.size(), n = matrix[0].size();for (int i = 0; i < m; i ++)if (target <= matrix[i][n - 1] && target >= matrix[i][0])for (int j = 0; j < n; j ++){int nl = 0, nr = n - 1;while (nl < nr){int mid = (nl + nr) / 2;if (matrix[i][mid] >= target) nr = mid;else nl = mid + 1;}if (matrix[i][nr] == target) return true;}return false;}
};

题解(加注释)

#include <vector>class Solution {
public:// 该函数用于在一个二维矩阵中查找目标值 target// 矩阵的每一行元素从左到右按升序排列,每行的第一个元素大于前一行的最后一个元素bool searchMatrix(std::vector<std::vector<int>>& matrix, int target) {// 获取矩阵的行数int m = matrix.size();// 获取矩阵的列数,假设矩阵至少有一行int n = matrix[0].size();// 遍历矩阵的每一行for (int i = 0; i < m; i++) {// 检查目标值是否可能在当前行中// 如果目标值小于等于当前行的最后一个元素且大于等于当前行的第一个元素if (target <= matrix[i][n - 1] && target >= matrix[i][0]) {// 在当前行中使用二分查找目标值// 初始化二分查找的左边界为 0int nl = 0;// 初始化二分查找的右边界为当前行的最后一个元素的索引int nr = n - 1;// 开始二分查找过程,只要左边界小于右边界,就继续循环while (nl < nr) {// 计算中间位置的索引int mid = (nl + nr) / 2;// 如果中间位置的元素大于或等于目标值// 说明目标值可能在左半部分或者就是中间位置,更新右边界为 midif (matrix[i][mid] >= target) {nr = mid;} // 否则,即中间位置的元素小于目标值// 说明目标值在右半部分,更新左边界为 mid + 1else {nl = mid + 1;}}// 当二分查找结束时,nl 和 nr 相等// 检查该位置的元素是否等于目标值if (matrix[i][nr] == target) {// 如果相等,说明找到了目标值,返回 truereturn true;} }}// 如果遍历完所有行都没有找到目标值,返回 falsereturn false;}
};

http://www.ppmy.cn/server/170000.html

相关文章

第四届图像、信号处理与模式识别国际学术会议(ISPP 2025)

重要信息 会议官网&#xff1a;www.icispp.com 会议时间&#xff1a;2025年3月28-30日 会议地点&#xff1a;南京 简介 由河海大学和江苏大学联合主办的第四届图像、信号处理与模式识别国际学术会议&#xff08;ISPP 2025) 将于2025年3月28日-30日在中国南京举行。会议主…

hive—常用的函数整理

1、size(split(...))函数用于计算分割后字符串数组的长度 实例1&#xff09;&#xff1a;由客户编号列表计算客户编号个数 --数据准备 with tmp_test01 as ( select tag074445270 tag_id,202501busi_mon , 012399931003,012399931000 index_val union all select tag07444527…

P8752 [蓝桥杯 2021 省 B2] 特殊年份——string提取索引转换为值

这里写目录标题 链接题目代码大佬解答string提取索引转换为值 链接 P8752 [蓝桥杯 2021 省 B2] 特殊年份 题目 代码 #include <iostream> #include <vector> #include <string> #include <algorithm> #include <math.h> #include <queue&g…

《Operating System Concepts》阅读笔记:p62-p75

《Operating System Concepts》学习第 10 天&#xff0c;p62-p75 总结&#xff0c;总计 14 页。 一、技术总结 1. system call (1) 定义 The primary interface between processes and the operating system, providing a means to invoke services made available by th…

51单片机-按键

1、独立按键 1.1、按键介绍 轻触开关是一种电子开关&#xff0c;使用时&#xff0c;轻轻按开关按钮就可使开关接通&#xff0c;当松开手时&#xff0c;开关断开。 1.2、独立按键原理 按键在闭合和断开时&#xff0c;触点会存在抖动现象。P2\P3\P1都是准双向IO口&#xff0c;…

✨ 索引有哪些缺点以及具体有哪些索引类型

索引的定义与原理 索引是数据库中用于提高数据检索效率的数据结构。它就像是书籍的目录&#xff0c;通过目录可以快速定位到所需内容的页码&#xff0c;而在数据库中&#xff0c;索引可以帮助数据库系统快速找到符合查询条件的数据行&#xff0c;而不必对整个表进行扫描。 其…

可编辑112页PPT | DeepSeek行业应用实践报告

荐言分享&#xff1a;DeepSeek&#xff0c;作为一种前沿的人工智能技术&#xff0c;自其发布以来&#xff0c;已在多个行业领域展现出广泛的应用潜力和实践价值。本报告旨在全面介绍DeepSeek的技术特点、行业应用实践以及其对未来行业发展的深远影响。 DeepSeek-R1&#xff0c;…

【python】网页批量转PDF

安装wkhtmltopdf 网站&#xff1a;wkhtmltopdf wkhtmltopdf http://www.baidu.com/ D:website1.pdf 安装pdfkit库 pip install pdfkit 批量转换代码 import os import pdfkit path_wkthmltopdf rE:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe config pdfkit.configu…