74. 搜索二维矩阵

方法一:两次二分查找
cpp 复制代码
class Solution {
public:
    bool searchMatrix(vector<vector<int>> matrix, int target) {
        auto row = upper_bound(matrix.begin(), matrix.end(), target, [](const int b, const vector<int> &a) {
            return b < a[0];
        });
        if (row == matrix.begin()) {
            return false;
        }
        --row;
        return binary_search(row->begin(), row->end(), target);
    }
};

方法二:一次二分查找

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;
    }
};

leetcode题解

相关推荐
Tisfy13 小时前
LeetCode 1727.重新排列后的最大子矩阵:枚举矩形底边是哪一行 + 排序
算法·leetcode·矩阵
样例过了就是过了16 小时前
LeetCode热题100 搜索二维矩阵
数据结构·c++·算法·leetcode·矩阵
Shining059616 小时前
AI 编译器系列(四)《AI 编译器中的后端优化》
linux·服务器·人工智能·线性代数·算法·triton·ai编译器
TheLegendMe17 小时前
NumPy 矩阵操作 + 图像处理
图像处理·矩阵·numpy
SJLoveIT19 小时前
手写transformer中自注意力机制,并解释每个矩阵及其运算的含义
深度学习·矩阵·transformer
Tisfy20 小时前
LeetCode 1878.矩阵中最大的三个菱形和:斜向前缀和
算法·leetcode·矩阵
张李浩1 天前
Leetcode 054螺旋矩阵 采用方向数组解决
算法·leetcode·矩阵
Frostnova丶2 天前
LeetCode 1878. 矩阵中最大的三个菱形和
算法·leetcode·矩阵
式5162 天前
CUDA编程学习(五)线程模型定义、矩阵相加
学习·算法·矩阵
j_xxx404_2 天前
力扣:525.连续数组和1314.矩阵区域和(二维前缀和)
算法·leetcode·矩阵