剑指offer面试题3:二维数组中的查找 java实现
来源:互联网 发布:mac桌面快捷键 编辑:程序博客网 时间:2024/06/10 11:58
题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下的递增的顺序。
请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
例如:
1 2 8 9
2 4 9 12
4 7 10 136 8 11 15
如果查找数字7,则返回true,如果查找5,则返回false;
题目分析:首先应该先选取数组中右上角的数字,如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数字,剔除这个数字所在的列,如果该数字小于要查找的数字,剔除这个数字所在的行。也就是说,如果要查找的数字不再二维数组的右上角,则每次都在数组的查找范围内剔除一行或一列,这样每一步都可以缩小查找范围,直到找到要查找的数字,或者查找范围为空(本段摘自 何海涛 《剑指offer》书中)。
程序实现:
/************************************************************** * 版 本 号:v1.0 * 题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下的递增的顺序。*请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。*例如:1 2 8 9* 2 4 9 12* 4 7 10 13* 6 8 11 15如果查找数字7,则返回true,如果查找5,则返回false;* 问题分析:1.在调用FindFromMatrix类时,需要用到对象名.函数名。*<span style="white-space:pre"></span>findfrommatrix.getValueFromMatrix(findfrommatrix.sample,4,4,7)* 输入描述:无* 程序输出:<span style="white-space:pre"></span> 1 2 8 9* 2 4 9 12* 4 7 10 13* 6 8 11 15* true***************************************************************/class FindFromMatrix{public static int[][] sample = new int[][] {{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};public static void pirntSample(){for(int i = 0 ;i < sample.length;i++){for(int j = 0; j<sample.length;j++){System.out.print(sample[i][j] + " ");}System.out.println();}}public static boolean getValueFromMatrix(int[][] sample,int rows,int columns,int number){boolean found = false;if(sample != null && rows > 0 && columns > 0){int row = 0;int column = columns - 1;while(row < rows && column >= 0){int tempValue = sample[row][column];if(number > tempValue){++row;}else if(number < tempValue){--column;}else{found = true;break;}}}return found;}}public class find_args{public static void main(String args[]){//pirntSample();FindFromMatrix findfrommatrix = new FindFromMatrix();findfrommatrix.pirntSample();System.out.println(findfrommatrix.getValueFromMatrix(findfrommatrix.sample,4,4,7));}}
程序输出结果:
0 0
- 剑指offer面试题java实现之题3:二维数组中的查找
- 剑指offer面试题3:二维数组中的查找 java实现
- 剑指Offer:面试题3——二维数组中的查找(java实现)
- 剑指offer面试题3—二维数组中的查找(Java实现)
- 剑指offer|面试题3:二维数组中的查找(Java实现)
- 【剑指offer】面试题3:二维数组中的查找
- 【剑指offer】面试题3:二维数组中的查找
- 剑指Offer:面试题3 二维数组中的查找
- 《剑指Offer》面试题3:二维数组中的查找
- 剑指offer面试题3-二维数组中的查找
- 【剑指Offer学习】【面试题3 :二维数组中的查找】
- 二维数组中的查找(剑指offer面试题3)
- 【剑指offer】 面试题3: 二维数组中的查找
- 剑指Offer面试题3:二维数组中的查找
- 剑指Offer:面试题3 二维数组中的查找
- 剑指offer-面试题3:二维数组中的查找
- 剑指offer面试题3之二维数组中的查找
- 剑指offer面试题3—二维数组中的查找
- 完美世界hr给大家的简历修改和面试的建议
- Redis安装
- 同时使用jsp与thymeleaf
- 关于函数返回字符串常量的问题
- 第一篇博客,最近在学算法,准备奋斗ACM
- 剑指offer面试题3:二维数组中的查找 java实现
- Spring AOP配置声明式事务,数据业务层捕获异常,事务控制处理
- 20160321_F_第三周
- 设计模式之状态模式
- JQUERY测试
- 递归的使用
- error C2059: syntax error : '!'和error C2043: illegal break
- laravel之多对多的关系模型
- 应用 Valgrind 发现 Linux 程序的内存问题