题干
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
func Find(board [][]int, target int) bool {}
直觉思路
二分查找的思想,不断缩小查找范围。
怎么想到的
不断缩小查找范围。
代码编写思路
多少行:rlen := len(board)
多少列: clen := len(board[0])
行索引和列索引最大值: rlen-1,clen-1
从右上角开始查找:初始化
r: 行索引,第一行, 0
c: 列索引,最后一列, clen-1
查找继续的条件:(最后一列最后一行都是可以继续查找的)
行索引(不断增加): r < rlen
列索引(不断减少): c >=0
时间复杂度 (TODO)
- m行,n列:
r从0到m-1,c从n-1到0. 循环最多执行m+n次,所以O(m+n)
来源:https://www.cnblogs.com/yudidi/p/12350645.html