美文网首页
剑指Offer第二版 面试题4 二维数组中的查找

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

作者: 冰枫澈 | 来源:发表于2018-04-11 15:50 被阅读0次

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

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

    代码如下:

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

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

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

    主函数

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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/ljvghftx.html