// Golang
func searchMatrix(matrix [][]int, target int) bool {
// 获取行列长度
m, n := len(matrix), len(matrix[0])
// 计算切片大小
var low, height int = 0, m*n-1
// fmt.Println(low, height)
// 二分查找
for low<=height{ // 注意循环条件
// 获取中间下标
mid := (height - low)/2 + low
// 获取中值
x := matrix[mid/n][mid%n]
if x == target{
return true
} else if x < target {
low = mid + 1
} else{
height = mid-1
}
}
return false
}
总结
本题可看做一个已排好序的数组(切片)中查找某一特定的值
首先想到二分查找方法
二分查找有固定的模板结构