二维数组中的查找
来源:互联网 发布:2016年6月我国域名总数 编辑:程序博客网 时间:2024/05/29 18:32
题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路
思路一:顺序遍历该二位数组依次比较大小,很显然该方法不可取;
思路二:由于数组每行都是递增的,因此对每行元素查找可以采用二分法,但是该思路并不是最优方法;
思路三:前两种思路都是从左上角元素出发,依次比较,如果换个思维从左下角或者右上角出发呢?从左下角出发,则当要查找数字比左下角数字大时右移,当要查找数字比左下角数字小时,上移,即可。代码如下:
public class Algorithm01 { public static void main(String []args){ int [][]array = { {11,13,15,17,19}, {21,23,25,27,29}, {31,33,35,37,39}, {41,43,45,47,49}, }; System.out.println(find(35, array)); } public static boolean find(int target, int [][] array) { boolean isFind = false; if(array == null || array.length == 0 || array[0].length == 0){ return isFind; } int lenI = array.length; // 二维数组的行数 int lenJ = array[0].length; // 二维数组的列数 int i=lenI-1, j=0; do{ if(target == array[i][j]){ isFind = true; }else if(target < array[i][j]){ i--; }else{ j++; } }while (i>=0 && j<lenJ && !isFind); return isFind; }}
阅读全文
0 0
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- Git 常用命令与操作基础知识
- Android框架_Banner实现轮播图Demo——超简单
- 软件工程学习笔记
- MApp图片加载
- okHttp网络请求二次封装
- 二维数组中的查找
- Jump Game
- Eclipse启动出现A Java RunTime Environment (JRE) or Java Development Kit (JDK) must be available in 的解决办法
- 【OpenGL】详解第一个OpenGL程序
- C语言中变量的作用域
- 【Python】模拟登陆并抓取拉勾网信息(selenium+phantomjs)
- sublime text3 快速在浏览器中打开
- PTA 6-2 有序顺序表的插入
- 关于页面设计方面的样式和想法