剑指offer刷题(1):二维数组中的查找
刷题平台:牛客网
二维数组中的查找
考点:
数组
1、题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
2、解题思路
对于一个二维数组,每一行都按照从左到右递增的顺序,每一列都按照从上到下递增的顺序排列,那么我们要想实现在这个数组中查找一个数。我们可以有很多个思路:
- 1、从第一个数据向后或者最后一个数据向前挨个查找一遍,直至查到该数据或者查完所有数据为止。虽然这种方法可以实现,但是比较麻烦。
- 2、我们可以利用数组行列都是递增的这么一个关系,因此我们可以从数组的左下角或者右上角开始查找,让所需要查找的数组与左下角或者右上角的数据进行比较,这样我们就可以利用矩阵的特性来不断的缩小数据应该出现的范围,从而可以很快的找出数据,当然也可以很快的确定该数据是否存在与改数组中。
3、算法实现
C实现
为了方便这里的矩阵我并没有手动输入,而是直接放在程序里面的。
1 |
|
C++实现
1 | class Solution { |