美文网首页
[刷题]1.二维数组查找

[刷题]1.二维数组查找

作者: AceCream佳 | 来源:发表于2017-03-23 19:18 被阅读0次

题目

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

解题思路

这题乍一看还是听费劲的,而且根本没给测试用例,这可咋验证对错?既然题里没给,那就自己写个简单的测试用例吧:
我是这么做的,创建一个5x5的二维数组,并且按照题目要求简单的添加上数字。我是输出5x5个0,然后先按行赋值,然后再给每列重新赋值。输出是这个样:
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9

然后就可以思考这题了。我们观察上面的输出:
左下角和右上角是个好地方,都可以作为开始。拿左下角来说:如果target小于左下角的5,则向上移动,如果大于左下角的5,则向右移动。这样循环下去,走完了还没找到那应该是真找不到了。。。
具体的解法写在了代码中:

完整代码

/**
 * Created by AceCream on 2017/3/22.
 * 在一个二维数组中,每一行都按照从左到右递增的顺序排序,
 * 每一列都按照从上到下递增的顺序排序。请完成一个函数,
 * 输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
 */
public class Test{

    public boolean Find(int target, int [][] array) {
        //显示二维数组:
//        for (int i=0;i<array.length;i++){
//            for (int j=0;j<array.length;j++){
//                System.out.print(array[i][j]+" ");
//            }
//            System.out.println();
//        }
        int len = array.length-1;
        int wid = 0;
        while (len>=0 && wid<array[0].length){

            if (array[len][wid]>target){
                len--;
            }else if (array[len][wid]<target){
                wid++;
            }else {
                return true;
            }
        }
        return false;
    }

    public static void main(String[] args) {
        int temp = 99;
        int[][] a = new int[5][5];
        for (int i=0;i<a.length;i++){
            for (int j=0;j<a.length;j++){
                a[i][j]=j+1;
            }
            for (int k=0;k<a[0].length;k++){
                a[i][k] = i+k+1;
            }

        }
        Test test = new Test();
        System.out.println(test.Find(temp,a));
    }
}

相关文章

  • [刷题]1.二维数组查找

    题目 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输...

  • 剑指offer 思路总结 python3 次序乱

    按牛客的顺序来,个人的刷题的一个总结,太水的没有特色的题就跳过了。。 1. 二维数组中的查找 题目描述在一个二维数...

  • 2019-08-07 B1004 成绩排名

    这道题用之前的二维数组的思路是不对的,因为这道题并不是对二维数组进行查找操作而是需要对二维数组进行遍历操作,因此我...

  • 剑指offer刷题笔记

    因为剑指offer的题目比较简单,所以就做成合集了,刷一题更新一题。 1 二位数组中的查找 在一个二维数组中(每个...

  • 剑指offer——JAVA版

    Array 数组题目汇总[18题] [剑指offer] 二维数组中的查找 [剑指offer] 旋转数组的最小数字 ...

  • 牛客网高频算法题系列-BM18-二维数组中的查找

    牛客网高频算法题系列-BM18-二维数组中的查找 题目描述 在一个二维数组array中(每个一维数组的长度相同),...

  • 123

    题2: 实现单例类 - done 题3: 二维数据查找 - done 题14: 调整数组顺序,使奇数在前偶数在后 ...

  • 算法题

    行列都是有序的二维数组,查找k是否存在【查找法】 二维数组中的查找(行列分别有序数组的二分查找)【递归法】 快速排...

  • 算法刷题|二维数组中的查找

    题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数...

  • LeetCode刷题-二维数组中的查找

    前言说明 算法学习,日常刷题记录。 题目连接 二维数组中的查找[https://leetcode-cn.com/p...

网友评论

      本文标题:[刷题]1.二维数组查找

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