剑指offer学习读书笔记--二维数组中的查找
来源:互联网 发布:音频频谱分析软件 编辑:程序博客网 时间:2024/06/01 09:01
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都是按照从上到下递增的顺序排序。请设计一个函数,输入这样的一个二维数组和一个整数,判断数组是否含有这个整数。
1 2 8 9
2 4 9 12
4 7 10 13
6 8 11 15
我们可以发现以下规律:首先选取数组右上角的数字。如果这个数字是要寻找的数字,则返回结果。若这个数字大于我们要寻找的数字,则去除这个数字所在的列;若这个数字小于我们要寻找的数字,则去除这个数字所在的行。也就是说如果查找的数字不在数组的右上角,则每一次都在数组查找范围中剔除一行或者一列,这样每一步都可以缩小查找的范围了,直到找到需要查找的数字或者查找的范围为空。
从另外一个角度看,从左下角的数字来看,如果这个数字大于查找的数字,则剔除该行,若这个数字小于查找的数字,则剔除该列。
bool Find(int* matrix,int rows,int cols,int num){ bool found = false; if (matrix != null && rows > 0 && cols > 0) { int row = 0; int col = cols - 1; while(row < rows && col >= 0) { if (matrix[row*cols + col] == num) { found = true; break; } else if(matrix[row*cols + col] > num) -- col; else ++ row; } } return found;}
1 0
- 剑指offer学习读书笔记--二维数组中的查找
- 《剑指Offer》读书笔记01:二维数组中的查找
- 【剑指Offer学习】【面试题3 :二维数组中的查找】
- 《剑指offer》 学习笔记(二): 二维数组中的查找
- 剑指offer-->二维数组中的查找
- 剑指offer之二维数组中的查找
- 剑指offer:3-二维数组中的查找
- [剑指Offer]二维数组中的查找
- 【剑指offer】二维数组中的查找
- [剑指Offer]二维数组中的查找
- 剑指Offer:二维数组中的查找
- 【剑指offer】二维数组中的查找
- 剑指offer 1384 二维数组中的查找
- 剑指Offer之二维数组中的查找
- 剑指offer 03:二维数组中的查找
- 剑指offer(2) - 二维数组中的查找
- 剑指offer-二维数组中的查找
- 剑指offer-3 二维数组中的查找
- 纵观jBPM:从jBPM3到jBPM5以及Activiti5(转)
- java.lang.IllegalArgumentException: Service Intent must be explicit异常说明
- 函数
- 堆排序
- AutoLayout框架Masonry使用心得
- 剑指offer学习读书笔记--二维数组中的查找
- UIButton及其方法
- 测试给andorid编写驱动
- utf8_general_ci、utf8_unicode_ci和utf8_bin的区别
- WCF 简易教程 IIS配置(一)
- BST:二叉排序树算法
- C语言——逗号表达式
- 剑指Offer-20-顺时针打印矩阵
- Apache与Tomcat的联系和区别