剑指offer之二维数组中的查找
来源:互联网 发布:淘宝千人千面揭密 编辑:程序博客网 时间:2024/05/02 02:19
题目:
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否有该整数。
分析:
从二维数组的右上角的元素开始判断,因为此元素是它所在行的最大数,是它所在的列的最小数。如果它等于要查找的数字,则查找过程结束。如果它大于要查找的数字,则可以排除它所在的列。如果它小于要查找的数字,则可排除它所在的行。这样如果要查找的数字不在数组的右上角,则每次判断都可以排除一行或一列以缩小查找范围,直到找到要查找的数字,或者查找范围为空。
下图是在二维数组中查找7的示意图:
代码:
/ 二维数组matrix// 每一行都从左到右递增排序// 每一列都从上到下递增排序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(row < rows && column >=0) { if(matrix[row * columns + column] == number) { found = true; break; } else if(matrix[row * columns + column] > number) --column; else ++row; } } return found;}
0 0
- 剑指offer之二维数组中的查找
- 剑指Offer之二维数组中的查找
- 剑指Offer之 - 二维数组中的查找
- 剑指offer之二维数组中的查找
- 【剑指offer之二维数组中的查找 】
- 剑指offer之二维数组中的查找
- 剑指offer之二维数组中的查找
- 剑指Offer算法实现之三:二维数组中的查找
- 剑指Offer之1384:二维数组中的查找
- 剑指offer面试题3之二维数组中的查找
- 剑指offer系列之1:二维数组中的查找
- 剑指offer(三)之二维数组中的查找
- 剑指offer之面试题3:二维数组中的查找
- [剑指offer学习心得]之:二维数组中的查找
- 剑指Offer之面试题3:二维数组中的查找
- (一)剑指Offer之二维数组中的查找
- 《剑指Offer》面试题三之二维数组中的查找
- 剑指Offer之面试题3:二维数组中的查找
- tkinter Event Bindings
- Hibernate学习笔记之体系结构的理解(二)
- Redis消息通知系统的实现
- [Android] 环境配置之Android Studio开发NDK
- Android官方文档-Bound Services(绑定服务)
- 剑指offer之二维数组中的查找
- java判断两个点之间是否超过24小时or超过5分钟
- php调试函数xdebug_debug_zval和debug_backtrace(需要安装xdebug)x
- 安卓数据解析之 fastjson 的解析以及Gson解析
- 那些令人喷饭的代码注释:仅以此代码献给...
- 那些在学习iOS开发前就应该知道的事(part 2)
- xposed 模块开发
- java.sql.SQLException: 无效的列索引
- 无数美女泣血总结:千万不要嫁给程序猿