LeetCode Hot 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

若将矩阵每一行拼接在上一行的末尾,则会得到一个升序数组,我们可以在该数组上二分找到目标元素。

代码实现时,可以二分升序数组的下标,将其映射到原矩阵的行和列上。

cpp 复制代码
class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int m = matrix.size(),n = matrix[0].size();
        int low = 0,high = m * n - 1;
        while(low <= high)
        {
            int mid = (high - low) / 2 + low;
            int x = matrix[mid / n][mid % n];
            if(x < target)
            {
                low = mid + 1;
                
            }
            else if(x > target)
            {
               high = mid - 1;
            }
            else
            {
                return true;
            }
        }
        return false;
    }
};
相关推荐
CoovallyAIHub14 分钟前
数据集分享 | 电子元件检测数据集
深度学习·算法·计算机视觉
lifallen18 分钟前
Java stream 并发问题
java·开发语言·数据结构·算法
寻星探路35 分钟前
二叉树(全)
算法
亮亮爱刷题37 分钟前
算法能力提升之快速矩阵
数据结构·算法·矩阵
ATaylorSu38 分钟前
排序算法入门:直接插入排序详解
笔记·学习·算法·排序算法
桦01 小时前
[除自身以外数组的乘积]
算法
CoovallyAIHub2 小时前
原来工业 AI 异常检测只做了一半?AnomalyNCD 补上了“最关键一环”
深度学习·算法·计算机视觉
shenghaide_jiahu2 小时前
数学建模——01规划/整数规划
算法·数学建模
CoovallyAIHub2 小时前
数据集分享 | PCB缺陷检测与玻璃缺陷实例分割数据集分享
深度学习·算法·计算机视觉
蒟蒻小袁2 小时前
力扣面试150题--只出现一次的数字
数据结构·算法·leetcode