74.搜索二维矩阵

搜索二维矩阵

给你一个满足下述两条属性的 m x n 整数矩阵:每行中的整数从左到右按非严格递增顺序排列;每行的第一个整数大于前一行的最后一个整数。给定一个整数 target,如果 target 在矩阵中返回 true,否则返回 false。

示例 1:

输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
输出:true

解析

把二维矩阵看作一维有序数组进行二分查找。

1
2
3
4
5
6
7
8
9
10
11
12
var searchMatrix = function (matrix, target) {
const m = matrix.length, n = matrix[0].length;
let left = 0, right = m * n - 1;
while (left <= right) {
const mid = (left + right) >> 1;
const val = matrix[Math.floor(mid / n)][mid % n];
if (val === target) return true;
if (val < target) left = mid + 1;
else right = mid - 1;
}
return false;
};

74.搜索二维矩阵
https://leetcode.lz5z.com/74.search-a-2d-matrix/
作者
tickli
发布于
2023年12月9日
许可协议