算法题之-二维数组元素查找

来源:互联网 发布:什么是数据api接口 编辑:程序博客网 时间:2024/05/16 11:43

描述:

给定的一个二维数组,该二维数组从左往右从,上往下依次增大,给定一个元素值,求该元素值是否是在该数组中 。

解决办法

先将待查找元素(设为key)与数组最右上角元素(设为a)对比:

  • 若a>key,因数值大小从上往下递增,故该元素往下一定不存在key值,故可以删除该列。
  • 若a <key,因数值大小从左往右递增,故该元素往右一定不存在key值,故可以删除该行。
    重复进行即可判断是否存在该元素。

图解

二维数组如下所示
这里写图片描述

key=7
其过程如下 :
这里写图片描述
这里写图片描述

其实现代码很简单:如下所示

function Find(arr,rows,colmuns,key){    var found=false;    if(arr!=null && rows>0 && colmuns>0 )    {        var row=0;        var colmun=colmuns-1;        while(row<rows && colmun>0)        {            if(arr[row][colmun]==key)                return true;            else if(arr[row][colmun]>key)            {                colmun--;            }            else               row++;        }        return found;    }    return found;}var arr=[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]];flag=Find(arr,4,4,7);console.log(flag);  //1,存在
原创粉丝点击