(1)二维数组的查找

1.题目

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

2.思路

1.对第一列的数据遍历,发现index的数据小于target,index+1行的数据小于target,那么在index从头到尾查找数据
2.否则从第二列开始查找对应的index行

n.一直到最后一列遍历完没找到对应的数据则表示查找失败

3.代码

package test1_10;
/* * @author qianliu on 2019/2/18 20:10 * @Discription: * 1.题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序, * 每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数, * 判断数组中是否含有该整数。 * 2.解决思路: * (1)用数组的第一列比较,确定target在第index行是否可行 * (2)在index行一直从头到尾查找 */
public class test1 {

    public static void main(String[] args) {
        int[][] array ={{1,2,8,9},{4,7,10,13}};
        System.out.println(Find(7,array));
    }

    /* * @author qianliu on 2019/2/18 20:28 * @param * @return * @Discription:思路:target>=array[0][i],则遍历array的i列 */
    public static boolean Find(int target, int [][] array) {
        //1.遍历数组的第一列,如果发现i行的第一列的数据>target,进入循环
        for(int i=0;i<array[0].length;++i){
            if(array[0][i]<=target) {
                //2.进入循环,遍历第i行
                for(int j=0;j<array.length;++j){
                    //遍历过程中三种情况:
                    //(1)小于target,则继续循环
                    //(2)等于target,找到结果,返回true
                    //(3)大于target,这一行遍历结束
                    if(array[j][i]<target){
                        continue;
                    }else if(array[j][i]==target){
                        return true;
                    }else{
                        break;
                    }
                }
            }
        }
        return false;
    }
}
全部评论

相关推荐

02-05 08:18
四川大学 Java
在思考的熊熊很讨厌吃香菜:不是,我门头沟学院呢?这都没排上?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务