面题3 二维数组的查找
2015-07-18 21:29
323 查看
数组在内存中是连续存储的,可以根据下标在O(1)时间内读写任何元素,因此时间效率是很高的。当数组作为函数的参数进行转递时,数组自动退化为同类型的指针。 1、提出问题 在一个二维数组中,每一行按从左到右递增顺序排序,每一列从上到下。编写一个函数,输入这样一个二维数组,判断数组中是否含有该整数。
2、分析问题 查找时当所选数组元素小于该数时,则查找范围在所选数的右边或下边,很明显右下的查找元素重复了。我们可选取右上角为基准点,当该数大于查找数,则可以剔除该列。当该数小于查找数时,可以剔除该行。也就是说如果该查找数不位于右上角,则每次可以删除一行或一列,直到找到待查找元素或区域为空。
3、解决问题 根据上面思路,代码如下:
bool Find(int* matrix,int rows,intcolumns,int num) { boolfind=false; introw=0; intcolumn=columns-1; if(matrix!=NULL&&rows>0&&columns>0) { while(row<rows&&column>=0) { if(matrix[row*column+column]==num) { find=true; break; } else { if(matrix[row*column+column]>num) column--; else row++; } } } returnfind; }
相关文章推荐
- 黑马程序员————Java基础日常笔记---(图形化用户界面)GUI
- 最近在做政务项目,此种项目,本来并不大,主要原因呢,就是要理好业务需要。
- HDU 5285 wyh2000 and pupil (二分图着色)
- AYIT暑假集训大二第一周周三赛 B 跳舞毯
- 号称不会被查水表的通信APP-Telegram
- ACdream 1412 2-3 Trees
- DSAPI之摄像头追踪指定颜色物体
- IOS开发-12.Autoresizing概述
- HUD 4707
- codeforces Gym 100187J J. Deck Shuffling dfs
- jquery动画总结
- ASP.net后台弹出消息对话框的方法!【转】
- 生产者消费者模式(1)
- 【Spark Core】TaskScheduler源码与任务提交原理浅析2
- 10行Java代码实现最近被使用(LRU)缓存
- OpenGL_ES 创建一个平面 绘制纹理 响应输入事件
- POJ1088滑雪(入门级DP)
- bzoj1257[CQOI]余数之和
- ZOJ 2104 Let the Balloon Rise
- poj3984-迷宫问题(广搜)