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 == matrixi.length

1 <= m, n <= 100
−104<=matrixij,target<=104-10^4 <= matrixij, target <= 10^4−104<=matrixij,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);
    }
};
相关推荐
handler017 分钟前
【算法】并查集(普通/扩展/带权)模板与例题
数据结构·c++·笔记·算法·c·图论·查并集
qq74223498423 分钟前
从“感知”到“决断”:测评百度伐谋产业决策智能体的端到端推理与行动机制
人工智能·算法·百度·大模型·运筹优化
繁星蓝雨42 分钟前
C++中对比pragma once和ifndef的使用区别
开发语言·c++·ifndef·头文件·pragma once
.千余43 分钟前
【C++】C++手写Vector容器:从底层源码模拟实现
开发语言·c++·经验分享·笔记·学习
a诠释淡然1 小时前
C++ vs Rust:哪个更适合你的下一个项目?
开发语言·c++·rust
小小de风呀1 小时前
de风——【从零开始学C++】(十二):stack和queue的基本使用和模拟实现
开发语言·c++
huohaiyu1 小时前
深入解析Java垃圾回收机制
java·开发语言·算法·gc
汉克老师1 小时前
GESP6级C++考试语法知识(五十三、动态规划----背包问题(六、分组背包)
c++·动态规划·背包问题·gesp6级·gesp六级·分组背
浮芷.1 小时前
鸿蒙PC端 TTS 并发调用问题详解:资源竞争与队列管理
算法·华为·开源·harmonyos·鸿蒙·鸿蒙系统
装不满的克莱因瓶1 小时前
掌握感知器的学习原理
人工智能·python·神经网络·算法·ai·卷积神经网络