二维数组中的查找

2018-08-20  本文已影响0人  有没有口罩给我一个
题目描述

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

  public boolean Find(int target, int [][] array) {
 if (array == null && array.length <= 0)
        return false;
    int m,n,rowSize,colSize;
    
    rowSize = array.length;//行数
    colSize = array[0].length;//列数
    m = rowSize -1;
    n = 0;

while(n<=colSize-1&&m>=0){
    if(target<array[m][n]){
        m--;
    }else if(target>array[m][n]){
        n++;
    }else{
        return true;
    }
}
return false;
}

解题思路:

首先我们选择从左下角开始搜寻,(为什么不从左上角开始搜寻,左上角向右和向下都是递增,那么对于一个点,对于向右和向下会产生一个岔路;如果我们选择从左下脚开始搜寻的话,如果大于就向右,如果小于就向下),其实左下角和右上角的实现效果是一样的。

上一篇 下一篇

猜你喜欢

热点阅读