🧩Algo 二分查找

74. 搜索二维矩阵

难度:🟡 Medium | 标签:二分查找、矩阵 | 状态:⬜ LeetCode 链接

思路

矩阵按行展开是有序的(每行升序、行尾 < 下一行行首)。 当作一维数组二分,下标 mid 对应 (mid/C, mid%C)

代码

class Solution {
public:
    bool searchMatrix(vector<vector<int>>& m, int target) {
        int R = m.size(), C = m[0].size();
        int l = 0, r = R * C;
        while (l < r) {
            int mid = l + (r - l) / 2;
            int v = m[mid / C][mid % C];
            if (v == target) return true;
            if (v < target) l = mid + 1;
            else r = mid;
        }
        return false;
    }
};

复杂度

  • 时间 O(log(R · C)),空间 O(1)

易错 / 回顾

  • 与 240 的区别:本题严格全局有序,可一次二分;240 只行 / 列内部有序,要 Z 字搜索
  • 二维 → 一维下标映射:(i, j) ↔ i * C + j
Related · 二分查找