【算法】剑指第二版面试题4 :二维数组中的查找

我的梦境 提交于 2020-03-23 13:28:01

题干

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

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)
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!