74.go 644 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package main
  2. import (
  3. "fmt"
  4. )
  5. func searchMatrix(matrix [][]int, target int) bool {
  6. if len(matrix) == 0 || len(matrix[0]) == 0 {
  7. return false
  8. }
  9. m, n := len(matrix), len(matrix[0])
  10. beg, end := 0, m*n-1
  11. for beg <= end {
  12. mid := (beg + end) / 2
  13. midVal := matrix[mid/n][mid%n]
  14. if target > midVal {
  15. beg = mid + 1
  16. } else if target < midVal {
  17. end = mid - 1
  18. } else {
  19. return true
  20. }
  21. }
  22. return false
  23. }
  24. func main() {
  25. m1 := [][]int{
  26. {1, 3, 6, 8},
  27. {9, 13, 53, 76},
  28. {99, 123, 243, 453},
  29. {654, 765, 876, 987},
  30. }
  31. fmt.Println(searchMatrix(m1, 987))
  32. fmt.Println(searchMatrix(m1, 97))
  33. fmt.Println(searchMatrix(m1, 1))
  34. }