(算法)二维数组中查找

2018-07-05  本文已影响0人  QuakOrigin
题目描述

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

原题来源 牛客网 题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;
}

好,立马就过了。


上一篇 下一篇

猜你喜欢

热点阅读