面试题04. 二维数组中的查找

1以行为单位,判断当前当前行首和尾部元素是不在在tagert范围内
2 如果在范围内执行二分查找
package mainimport "fmt"func findNumberIn2DArray(matrix [][]int, target int) bool {for i := 0; i < len(matrix); i++ {l :=len(matrix[i])if l>0 &&matrix[i][0] <= target && target <= matrix[i][l-1] {ok := BinarySearch(matrix[i], target)if ok {return true}}}return false}func BinarySearch(a []int, target int) bool {l := 0r := len(a) - 1for l <= r {mid := l + (r-l)>>1if a[mid] == target {return true} else if a[mid] > target {r = mid - 1} else {l = mid + 1}}return false}//面试题04. 二维数组中的查找func main() {fmt.Println(findNumberIn2DArray([][]int{{1, 4, 7, 11, 15},{2, 5, 8, 12, 19},{3, 6, 9, 16, 22},{10, 13, 14, 17, 24},{18, 21, 23, 26, 30}}, 20))fmt.Println(findNumberIn2DArray([][]int{{}}, 1))}

