二维数组的查找

问题描述:
    在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序,输入一个二维数组以及一个值,看值是否在二维数组之中
解题思路:
    每次查找查找最右上角,如果查找的数等于目标值,则返回;如果查找的值小于目标值,放弃这一行,如果查找的值大于目标值,放弃该列。

代码如下:

public class ArrayFind {
    public ArrayFind() {
    }
    public static boolean Find(int target, int [][] array) {
        //每次查找查找最右上角
        //如果查找的数等于目标值,则返回
        //如果查找的值小于目标值,放弃这一行,如果查找的值大于目标值,放弃该列
        int rows=array.length;  //得到行数
        for(int i=0;i<rows;i++){
          int  colums=array[i].length;  //此行的列数
            for (int j=0;j<colums;j++){
                if(array[i][colums-1-j]==target){
                    //如果查找的值是目标返回true
                    return true;
                }else if(array[i][colums-1-j]>target){  //大于目标,抛弃该行
                    continue;
                }else if (array[i][colums-1-j]<target){ //右上角小于目标。抛弃该列
                    continue;
                }
            }
        }
        return false;
    }
    public static void main(String[] args) {
        //定义二维数组
        int [][] array={
                {1,3,4,5,6},
                {2,4,5,6,7},
                {3,6,7,8,9},
                {4,8,9,10,12}
        };
        //System.out.println(array[0][4]);
        System.out.println(Find(10,array));
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序...
    revlis阅读 1,297评论 0 0
  • 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数...
    小歪与大白兔阅读 148评论 0 0
  • 思路 方法一: 首先选取矩阵右上角的元素作为起始元素,如果要查找的数字与该数字相等,则查找结束;如果该数字大于要查...
    shuixingge阅读 352评论 0 0
  • 一.当我们需要解决一个复杂的问题时,一个很有效的办法就是从一个具体的问题入手,通过分析简单具体的例子,试图寻找普遍...
    里里角阅读 204评论 0 0
  • 今天在看php的书籍时,生成这样一句正则表达式 我一开始看不懂,后来查了资料才明白,这里面有几个重要的部分。 分割...
    肉饼屋阅读 544评论 0 0