253 字
1 分钟
LeetCode-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示例 2:
![]()
输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13输出:false
手撕
思路: 这题可以看作长度为 m*n 的数组,只需要把mid转换为对应矩阵的row和col即可,其他与 35. 搜索插入位置 类似
func searchMatrix(matrix [][]int, target int) bool { m, n := len(matrix), len(matrix[0]) left, right := 0, m*n-1 var mid, row, col int
for left <= right { mid = left + (right - left)/2 row = mid / n col = mid % n
if matrix[row][col] == target { return true }else if matrix[row][col] < target { left = mid + 1 }else { right = mid - 1 } } return false} LeetCode-74. 搜索二维矩阵
https://sheep44044.github.io/posts/算法/二分查找/leetcode-74-搜索二维矩阵/