您的位置:首页 > 职场人生

文章标题

2016-04-02 10:11 225 查看
今天看了《剑指Offer》的面试题3,还是很有收获的。题目是一个二维数组,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。

初看的时候,我也是看得云里雾里。但是当作者将思路引导了右上角的时候,顿时就有豁然开朗的感觉。正是因为每一行从左到右依次递增,每一行从上到下依次递增,这样的话,抓住右上角的数字与待查找数字进行比较,就相当于抓住了“牛鼻子”。若右上角数字等于待查找数字,那再好不过了,直接返回true就是了;若右上角数字大于待查找数字,那么就知道,右上角数字的这一列的每一个数都比待查找数字大(因为右上角数字本身就是所在列的最小值),所以这一列就可以排除掉了;若右上角数字小于待查找数字,那么右上角数字的所在行就可以被排除掉了(因为右上角数字本身就是所在行的最大值)。

这样的思路理清楚了之后,就好办了,代码就是书中给的代码了:

bool Find(int* matrix, int rows, int columns, int number)

{

bool found = false;

if(matrix != NULL && rows>0 && columns>0 )

{

int row = 0;

int column = columns-1;

while(column>=0&&row
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试题 二维数组