Задача: Двумерный бинарный поиск

Задача: Двумерный бинарный поиск

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
}





Report Page