LeetCode热题100 搜索二维矩阵

题目描述

给你一个满足下述两条属性的 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-10^4 <= matrix[i][j], target <= 10^4−104<=matrix[i][j],target<=104

思路

进行两次二分查找模板,第一次二分查找获取所在行,第二次二分查找获取所在列。

代码

cpp 复制代码
class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        // 找到所在行的下一行
        vector<vector<int>>::iterator row = upper_bound(matrix.begin(), matrix.end(), target, [](const int a, const vector<int> &b)
        {
            return a < b[0];   
        });
        // 所在行的下一行是第0行, 说明元素不存在
        if(row == matrix.begin())
        {
            return false;
        }
        // 找到所在行
        --row;
        // 对所在行进行二分查找
        return binary_search(row->begin(), row->end(), target);
    }
};
相关推荐
LG.YDX15 小时前
笔试训练48天:最长无重复子数组
数据结构·算法
SHARK_pssm15 小时前
【数据结构——顺序表】
c语言·数据结构·经验分享·笔记
yong999015 小时前
基于灰狼算法优化支持向量回归(GWO-SVR)的混合算法
算法·数据挖掘·回归
橘颂TA15 小时前
【Linux】自旋锁
linux·开发语言·数据库·c++
sali-tec15 小时前
C# 基于OpenCv的视觉工作流-章53-QR二维码1
图像处理·人工智能·opencv·算法·计算机视觉
ECT-OS-JiuHuaShan15 小时前
功夫不负匠心人,渡劫代谢舞沧桑
android·开发语言·人工智能·算法·机器学习·kotlin·拓扑学
珹洺15 小时前
C++AI多模型聊天系统(一)项目背景意义与整体架构、核心基类实现
c++·人工智能·架构
智者知已应修善业15 小时前
【51单片机ADC-MAX1241/ADC0832驱动】2023-6-6
c++·经验分享·笔记·算法·51单片机
re林檎15 小时前
算法札记——4.26
算法
gumichef16 小时前
*链表OJ
数据结构·链表