方法一:暴力破解法

  1. 分析:直接嵌套循环,如果在数组中找到target,返回true;否则,返回false

  2. 时间复杂度:O(n^2)。空间复杂度:O(1)

    func Find( target int ,  array [][]int ) bool {
     // write code here
     for i := 0;i<len(array);i++ { for j:="0;j<len(array[0]);j++" if array[i][j]="=target" return true } false ``` 方法二:二分查找法 1. 分析:把二分值定在二维数组的右上角或者左下角,对二维数组进行二分。以右上角为例 因为二位数组的特性,我们将二分值val初始化为二维数组右上角的值,如果target<val 则target的值应该在val当前位置的左侧,我们将val重新赋值其左侧二维数组的值;如果target>val 则target的值应该在val当前位置的下侧,我们将val重新赋值其下侧二维数组的值。

    func Find( target int , array [][]int ) bool {
    // write code here
    var arrRow int = len(array)
    if arrRow == 0{

     return false

    }
    var arrCol int = len(array[0])
    if arrCol == 0{

     return false

    }

    var r int = 0
    var c int = arrCol-1

    for r<arrrow && c>=0 {

     if(target == array[r][c]) {
         return true
     } else if target > array[r][c] {
         r++
     } else {
         c--
     }    

    }
    return false
    }
    ```</len(array);i++>