74.搜索二维矩阵

57 阅读1分钟

题目:
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:

  • 每行中的整数从左到右按升序排列。
  • 每行的第一个整数大于前一行的最后一个整数。
    算法:
    二分搜索的变形
func searchMatrix(matrix [][]int, target int) bool {
	n := len(matrix)
	m := len(matrix[0])
	left, right := 0, n * m - 1
	for left < right {
		mid := (left + right) / 2
		i := mid / m 
		j := mid % m
		if matrix[i][j] == target {
			return true
		} else if matrix[i][j] < target {
			left = mid + 1
		} else {
			right = mid - 1
		}
	}
	return matrix[left / m][left % m] == target
}