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

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

codeType
输入: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
解法
ts
function searchMatrix(matrix: number[][], target: number): boolean {
// 二维矩阵先转一维矩阵,这样就是普通的二分查找了
const n = matrix.length
const m = matrix[0].length
const IndexToIJ = (index: number) => {
return {
i: Math.floor(index / m),
j: index % m
}
}
let low = 0, hight = m * n - 1
while(low <= hight){
let mid = Math.floor((low + hight) / 2)
let { i, j } = IndexToIJ(mid)
if(matrix[i][j] === target){
return true
}else if(matrix[i][j] > target){
// 在左边
hight = mid - 1
}else{
low = mid + 1
}
}
return false
};