题目来源:https://leetcode.com/problems/search-a-2d-matrix/
问题描述
74. Search a 2D Matrix
Medium
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:
- Integers in each row are sorted from left to right.
- The first integer of each row is greater than the last integer of the previous row.
Example 1:
Input:
matrix = [
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
target = 3
Output: true
Example 2:
Input:
matrix = [
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
target = 13
Output: false
------------------------------------------------------------
题意
一个二维有序矩阵(何为二维有序请看上面的示例),查找target是否在矩阵中
------------------------------------------------------------
思路
二分查找的简单变式
------------------------------------------------------------
代码
func searchMatrix(matrix [][]int, target int) bool {
m := len(matrix)
if m == 0 {
return false
}
n := len(matrix[0])
if n == 0 {
return false
}
l, r := 0, m*n-1
for l <= r {
mid := (l+r)/2
if matrix[mid/n][mid%n] == target {
return true
} else if matrix[mid/n][mid%n] < target {
l = mid+1
} else {
r = mid-1
}
}
return false
}