Задача: Двумерный бинарный поиск
https://t.me/Golang_googleУсловие: дана 2-мерная матрица чисел, в которой числа упорядочены по возрастанию сверху-вниз и слева-направо. Надо определить, есть ли в матрице целевое значение.
Пример:
Ввод: matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
Вывод: True
Ввод: matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13
Вывод: Fasle
Решение :
Go
func searchMatrix(matrix [][]int, target int) bool {
left, right := 0, len(matrix)*len(matrix[0])
for left < right {
middle := (left + right) / 2
i, j := middle/len(matrix[0]), middle%len(matrix[0])
if target < matrix[i][j] {
right = middle
continue
}
if target > matrix[i][j] {
left = middle + 1
continue
}
return true
}
return false
}