二维数组中的查找(Java)
来源:互联网 发布:linux 时间同步 编辑:程序博客网 时间:2024/05/17 22:10
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否存在该整数。
分析:首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数字,剔除这个数字所在的列;如果该数字小鱼要查找的数字,剔除这个数字所在的行。也就是说如果要查找的数字不在数组的右上角,则每一次在数组查找的范围内剔除一行或者一列,这样每一步就可以缩小查找的范围,直到找到要查找的数字,或者查找范围为空。(应该选取右上角或者左下角的数字作为初始值。不能选择左上或者右下角数字作为初始值,因为选取上述位置的数字不能保证每次都剔除一整行或者整列。)
import java.util.Scanner;public class SolveProblem2 { public static boolean solveProblem2(int[][] array,int number){ if(array==null) return false; int row=0; int column=array[0].length-1; while((row<array.length)&&(column>=0)) { if(array[row][column]==number) return true; if(array[row][column]>number) column--; else row++; } return false; } public static void main(String[] args) { int[][] testArray=new int[5][5]; int temp=0; for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ testArray[i][j]=temp; temp++; } } System.out.println("数组中包含0~24的所有整数"); System.out.println("请输入待查数字:"); Scanner input=new Scanner(System.in); int number=input.nextInt(); if(solveProblem2(testArray, number)==true) System.out.println("该数组中包含整数:"+number); else System.out.println("该数组中不包含整数:"+number); }}
ps:本文参考《剑指offer:名企面试官精讲典型编程题》(何海涛著,北京:电子工业出版社,2012)和CSDN资源(http://download.csdn.net/detail/linda_lindaaaa /9055079)以及其他互联网资源。
0 0
- 二维数组中的查找(Java版)
- 二维数组中的查找(java版)
- 二维数组中的查找(Java)
- 二维数组中的查找(java版)
- 二维数组中的查找(java实现)
- [Java]二维数组中的查找
- 二维数组中的查找(数组 查找)
- JAVA实现二维数组中的查找(《剑指offer》)
- JAVA实现二维数组中的查找(《剑指offer》)
- 剑指offer——二维数组中的查找(JAVA)
- 剑指offer--二维数组中的查找 java
- 剑指offer:二维数组中的查找(java)
- [剑指Offer]二维数组中的查找[java]
- 二维数组中的查找java实现
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- arm linux打印机驱动编译方法,嵌入式linux驱动打印机HP系列
- 部分Android设备HTML5的vedio标签loop属性不循环问题解决
- AngularJs数据绑定原理
- c#内存问题讲解
- iOS开发——创建你自己的Framework
- 二维数组中的查找(Java)
- idea中xml编译不到target文件夹里的问题
- Hbase 查询某一列的所有时间版本的数据
- shp写+shplib
- xgboost ppt(2)——回归树和组合
- Linux下ffmpeg安装与开发配置
- 《国际大学生程序设计竞赛例题(四)》65页。 中奖概率(概率)
- 98版本QQ五笔词库转98版万能五笔词库
- IOS系列——UItableview的基础使用