二维数组中的查找

牛客网刷题 第一天

题目描述

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

思路一:最简单的方法当然是两层for循环遍历喽,不过时间复杂度比较高

思路二:用二分查找,每一行看成一个有序的递增序列。用二分查找方法。

思路三:比较矩阵右上角的数与target的大小,如果target比这个矩阵右上角的数大,因为右上角的元素是该行最大的值了,那么就从他下一行寻找。如果target比右上角的数小,因而它是按照行,列递增的,所以它应该从除去最右边的那些列寻找。向左寻找。

public class Solution {
    public boolean Find(int target, int [][] array) {
        if(array.length ==0 || array[0].length==0){
            return false;
        }
        int rows = array.length-1;
        int cols = array[0].length-1;
        int i = 0;
        int j =cols;
        while(i<=rows && j >=0)
        {   
         if(array[i][j] < target)
         {
                i++;
         }else if(array[i][j]>target)
         {
             j--; 
             
         }else{
             return true;
         }
        
        }
        return false;
    }  
         
}

2019. 6.9日打卡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值