方法一:暴力破解法
分析:直接嵌套循环,如果在数组中找到target,返回true;否则,返回false
时间复杂度: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-1for 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++>