剑指Offer第二版 面试题4 二维数组中的查找

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

解题思路:从左下角或右上角开始比较,如果要找的number<数组右上角中的数字,则最右一列都可排除无需再找。而后列--,在进行判断,如果number>此时数组中的数字,则此行均可排除,行++。直至找到该数字。

代码如下:


注意一点,二维数组在内存中占据连续的空间,在内存中从上到下存储各行元素,同一行中按照从左到右的顺序存储。因此可根据行号和列号计算出相对于数组首地址的偏移量,从而找到对应的元素。

warning:遍历行列的时候row从0开始,col=cols-1,也就是右上角的数字,比较之后依据大小进行col--或者row++的操作,最终注意row<rows以及col>0。

然后写一个主函数,调用上述方法函数。


主函数

定义一个4*4的二维数组,需要注意二维数组的传参方式,这里可以将(int *)data,理解为将二维数组data拉成了一维。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。