美文网首页
(算法)二维数组中查找

(算法)二维数组中查找

作者: QuakOrigin | 来源:发表于2018-07-05 17:41 被阅读0次
    题目描述

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

    原题来源 牛客网 题1

    考虑到二维数组每一行与每一列都是递增的,对于每一行所有元素来说,拿最后一个元素与输入的值进行判断,如果小于输入值,那这一整行就不用判断了。如果大于,那需要对此行元素进行遍历查看,用 二分法 处理单行元素,提高运行效率。

    上代码

    public boolean Find(int target, int [][] array) {
        
        for(int i=0; i<array.length;i++) {
    
            int[] _arr = array[i];        
            int pl = _arr.length;
            
            if(_arr[pl-1] < target) {
                continue;
            }
            
            int lt = 0;
            int rt = _arr.length-1;
            int mid = (lt+rt)/2;
            
            while (lt<=rt) {
                if(target == _arr[mid]) {
                    return true;
                }else if(_arr[mid] < target) {
                    lt = mid+1;
                }else {
                    rt = mid-1;
                }
                mid = (lt+rt)/2;
            }
        }
        return false;
    }
    

    开心运行一波,结果报错:



    数组空没有做判断,😓
    加个判断

    if(_arr == null || 0==_arr.length) {
         return false;
    }
    

    好,立马就过了。


    相关文章

      网友评论

          本文标题:(算法)二维数组中查找

          本文链接:https://www.haomeiwen.com/subject/wcwpuftx.html