当前位置:网站首页>240.搜索二维矩阵II
240.搜索二维矩阵II
2022-07-30 05:38:00 【Linke66】
解题思路
看到两个关键词,有序+寻找目标值,很自然的想到二分查找。
当二维数组中的某一行首元素<=target,并且尾元素>=target 时,那么target可能在这一行。
因此,首先寻找所有可能有target的行,保存在数组中。
接下来对这些行,进行二分查找,找到就返回true,没找到就对下一个符合条件的行进行二分查找。
假如最后都没有找到target,那就是matrix二维数组中不存在target,返回false。
class Solution {
public:
bool b_search(const vector<int>& vec,int target)
{
int left=0,right=vec.size()-1;
int mid;
while(left<=right)
{
mid=left+(right-left)/2;
if(vec[mid]==target)
return true;
else if(vec[mid]<target)
left=mid+1;
else
right=mid-1;
}
return false;
}
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int m=matrix.size(),n=matrix[0].size();
vector<int>search_row;
for(int i=0;i<m;++i)
{
int first_num=matrix[i][0];
int last_num=matrix[i][n-1];
if(target==first_num||target==last_num) return true;
if(target>first_num&&target<last_num)
search_row.push_back(i);
}
for(auto& row:search_row)
{
if(b_search(matrix[row],target))
return true;
}
return false;
}
};
边栏推荐
- [Mysql] DATEDIFF function
- Seata exception: endpoint format should like ip:port
- 934.最短的桥(广度优先搜索)
- G Bus Count (Google Kickstart2014 Round D Problem B) (DAY 89)
- 【飞控开发基础教程9】疯壳·开源编队无人机-PWM(电机控制)
- “tensorflow.keras.preprocessing“ has no attribute “image_dataset_from_directory“
- Countdown (Source: Google Kickstart2020 Round C Problem A) (DAY 88)
- Anaconda安装教程
- 分布式事务之 Atomikos 原理和使用(一)
- 爬虫数据是如何收集和整理的?
猜你喜欢
How is crawler data collected and organized?
cnpm installation steps
net start mysql MySQL service is starting. MySQL service failed to start.The service did not report any errors.
微积分 / 自动求导
Graphic mirror symmetry (schematic diagram)
Anaconda安装教程
cmd(命令行)操作或连接mysql数据库,以及创建数据库与表
[其他] DS5
[Image detection] Research on cumulative weighted edge detection method based on grayscale image with matlab code
Navicat connection MySQL error: 1045 - Access denied for user 'root'@'localhost' (using password YES)
随机推荐
[其他] DS5
MySql模糊查询大全
idea 编译protobuf 文件的设置使用
爬虫数据是如何收集和整理的?
MySQL的存储过程
cnpm installation steps
CISP-PTE Zhenti Demonstration
机器学习—梯度下降Gradient Descent Optimization—c语言实现
646.最长数对链(动态规划)
Summary of SQL classic interview questions in 2022 (with analysis)
图形镜像对称(示意图)
Introduction to Oracle Patch System and Opatch Tool
瑞吉外卖项目:新增菜品与菜品分页查询
pwn-ROP
MySQL (2)
MySQL (2)
Arrange numbers (DAY90) dfs
腾讯面试居然跟我扯了半小时的CountDownLatch
排列数字(DAY90)dfs
np.argsort()函数详细解析