数据结构与算法之二维数组中的查找问题

题目描述:

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

算法思路:

首先我们可以先用一个实际的例子来引导我们的思考,比如有这样一个数组,第一行为{1,5,9,13},第二行为{2,6,10,14,},第三行为{3,7,11,15},第四行为{4,8,12,16},这个时候我们就能很直观的看见这个二维数组的规律,我们不妨这样思考:既然是查找一个二维数组是否包含某个整数,而这个二维数组又是有规律的,我们就可以用对照法,选择一个有代表性的位置作为参照物,比如左下角或者右上角。我暂且选择以右上角作为示范,如果目标数大于右上角,则行增加。如果目标数小于右上角,则列减少。否者就是找到目标数了。编写代码的过程注意中要注意控制好边界条件。

代码实现:

这里我以java语言作为示范,其他语言的使用者可以参照我的算法思路进行相应的代码实现 

public class Solution {

    public boolean Find(int target, int [][] array) {

    int i=array.length-1;

    int j=0;

    while((i>=0)&&(j

    if(array[i][j]>target)

    {   

        i--;

    }

    else if(array[i][j]

    {

        j++ ;

    }   

    else{

      return true; 

    }

    }   

    return false;

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容