二维数组的查找
来源:互联网 发布:怪物猎人初音捏脸数据 编辑:程序博客网 时间:2024/04/30 04:19
题目描述:在一个二维数组中,每一行都按照从左到右的递增顺序排序,每一列都按照从上到下的顺序排序,请完成一个函数,输入这样一个二位数组和一个整数,判断数组中是否有该整数。
思路:充分考虑到该数组行与列递增的特性。
首先选择数组中右上角的数字,如果该数字等于要查的数字,查找过程结束;如果该数字大于要查找的数字,剔除这个数字所在的列;如果该数字小于要查找的数字,剔除这个数字所在的行。
算法如下:
package SwordOffer;/** * Created by L_kanglin on 2017/3/13. */public class Test1 { public static boolean Find(int target,int [][] array){ //二维数组的行 int rows =array.length; //二维数组的列 int columns=array[0].length; boolean Flag=false; if(array.length!=0 &&rows>0&&columns>0){ int row=0; int column=columns-1; //注意这个循环的时机 while(row<rows&&column>=0){ System.out.println("查找前 "+array[row][column]); if(array[row][column]==target){ Flag=true; break; } else if(array[row][column]>target){ --column; } else{ ++row; } System.out.println("查找后 "+array[row][column]); } } return Flag; } public static void main(String [] args){ //二维数组的初始化 int [][] num = new int[][]{{0, 1, 2, 3},{4, 5, 6, 7} , {8, 9, 10, 11},{12, 13, 14, 15} }; int target=4; System.out.println(Find(4,num)); }}
运行结果如下:
查找前 3查找后 7查找前 7查找后 6查找前 6查找后 5查找前 5查找后 4查找前 4true
0 0
- 二维数组的查找
- 二维数组的查找
- 二维数组的查找
- 二维数组的查找
- 二维数组的查找
- 二维数组的查找
- 二维数组的查找
- 二维数组的查找
- 二维数组的查找
- 二维数组的查找
- 二维数组的查找
- 二维数组的查找
- 二维数组的查找
- 二维数组的查找
- 二维数组的查找
- 二维数组的查找
- 二维数组的查找
- 二维数组的查找
- 队列
- cf246c
- C++动态内存管理
- C语言的数据类型及范围
- MFC画笔CPen类
- 二维数组的查找
- Settings指令分析
- Java实现十大排序方法
- 【程序8】 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。 例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
- 正则表达式入门
- 通过OnScrollListener来监听RecyclerView的位置
- IDEA的入门使用(二)——插件
- SDUT 3769 分割 超大数据加一位数 比较大小
- Flume-ng源码解析之Channel组件