每天一道算法题

本文介绍了一种在特殊排序的二维数组中查找特定整数的高效算法。数组的每一行和每一列都按照递增顺序排列,通过从左下角元素开始,根据目标值与当前元素的大小关系,决定向上或向右移动,直至找到目标值或确定不存在。
摘要由CSDN通过智能技术生成

牛客网剑指offer

  • 二维数组的比较:在一个二维数组中(每个一维数组的长度相同)

  • 每一行都按照从左到右递增的顺序排序

  • 每一列都按照从上到下递增的顺序排序。

  • 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

  • 算法思路:

  • 二维数组每行每列都是按顺序排好的。所以我们选取最左下角的元素,比该元素大的数向右找,比该元素小的元素向上找

  • 超过数组的边界则找不到该元素。

  • @author 橙子

  • 代码如下:

  • `public class Test1二维数组的查找 {
    public static boolean Find(int target, int [][] array) {
    // boolean found =true;
    int hang=array.length; //hang长
    int lie=array[0].length; //lie长
    int a=0; //从第一列最后一个元素开始
    int b=hang-1;// 最后一行
    while(b>=0 && a<lie) {//比这个元素大的向右找,比这个小的向上找
    if(target<array[b][a])
    b–;
    else if(target>array[b][a])
    a++;
    else
    return true;
    }
    return false;
    }

    public static void main(String[] args) {
    int [][] a ={{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};
    System.out.println(Find(21, a));
    }
    }
    `萌新刚起步多谢支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值