博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二维数组的查找问题
阅读量:4560 次
发布时间:2019-06-08

本文共 776 字,大约阅读时间需要 2 分钟。

问题描述:给定一个二维整数数组,其中每一行从小到大排列,每一列也是从小到大排列,给定一个整数,判断该数是否在该数组中。

分析:对于干问题,最简答的方法就是穷举了,但是时间复杂度太高了,这时我们可以使用这个矩阵数组的特点来解决。

每行和每列元素都是从小到大排列,可以利用这个性质,我们可以从右上角或者左下角开始进行比较,也就是用反对角线上的元素进行比较,以右上角为例:

        1.如果该数大于右上角元素,则可以排除右上角元素所在的列,下次向左搜索;

        2. 如果该数小于右上角元素,则可以排除右上角元素所在的行,下次向下搜索;

        3.如果该数等于右上角元素,则可以直接返回结果。

       具体的Java代码如下,写法比较通用,读者可以很容易转换为其他语言实现。

     

1 public class Main { 2     public static boolean search(int a[][],int p){ 3         boolean flag=false; 4         if(a==null)return flag;                    //如果是空数组则返回false 5         int n1=a.length-1,n2=a[0].length-1;        //求出第一维和第二维的长度 6         int i=0,j=n2; 7         while(i<=n1 && j>=0){ 8             if(a[i][j]>p)j--;                      //删除列 9             else if(a[i][j]

输出结果为:

true

转载于:https://www.cnblogs.com/guozhenqiang/p/5461733.html

你可能感兴趣的文章
transient
查看>>
[HDU 4348]To the moon
查看>>
初识【Windows API】--文本去重
查看>>
[转]IOS多线程
查看>>
详解spl_autoload_register() 与 __autoload
查看>>
Axure RP Extension for Chrome安装
查看>>
day_10
查看>>
ArcGIS API for JavaScript 入门教程[6] 再讲数据——Map类之可操作图层
查看>>
tfs2012 的体验地址
查看>>
打造专业外观-九宫图
查看>>
让discuz论坛单独版块贴子侧边栏(用户信息栏)关闭的修改办法
查看>>
倒计时
查看>>
Robolectric
查看>>
搜索引擎之全文搜索算法功能实现(基于Lucene)
查看>>
XShell远程连接本地虚机
查看>>
好吧,又失眠
查看>>
一个不错的cv个人主页
查看>>
20159206《网络攻防实践》第十二周学习总结
查看>>
'Upgrade' header is missing
查看>>
[git]git的分支管理
查看>>