二维数组的查找

作者: NetCedar | 来源:发表于2018-10-14 18:07 被阅读0次

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

    代码如下:

    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));
        }
    }
    

    相关文章

      网友评论

        本文标题:二维数组的查找

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