二维数组中的查找

二维数组中的查找

题目描述

	在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,
每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,
判断数组中是否含有该整数。

问题分析:

1,查找二维数组中的某个元素,最简单的就是暴力法,两个for循环逐个比对
2,也可以根据给出的数组特性,从右上角开始每次找最右边的开始比较,逐层向下(中间可以加上折半查找)
3,从左下找--对应上面的右上找

代码展示(javascript):

function Find(target, array)
{
    // write code here
// [
//    [1,2,8,9],
//    [2,4,9,12],
//    [4,7,10,13],
//    [6,8,11,15]]
    //target -- 7
//    console.log(array.length);

    //第一种方法:暴力求解,双循环
//    for(let i=0;i<array.length;i++){
//        for(let j=0;j<array[0].length;j++){
//            if(array[i][j] == target)
//                return true;
//            }
//    }
//    return false;
    
    //第二种方法 从右上角开始每次找最右边的开始比较,逐层向下(中间可以加上折半查找)
    if(array.length == 0)
        return false;
//    if(target<array[0][0] || target>array[array.length][array[0].length])
//        return false;
    let rows = array.length;
    let columns = array[0].length;
    let row = 0;
    let column = columns-1;
    
    while(row<rows && column>=0){
        if(array[row][column] == target)
            return true;
        if(array[row][column] > target)
            column -=1;
        else{
            row +=1;
        }                               
    }
    return false;
}

总结:

  题目不难,重点应该在于优化上,对每行元素可以加入折半查找提高查找效率,
也可以根据条件进行一些简单的筛选;比如:右上找,左下找。

  算是剑指offer--js版本的开始
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值