二维数组中查找某个数字

给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中。
如:图片说明 中找出数字7,我们可以选择遍历数组来查找,但效率极慢,但是我们经过观察发现,因为他是排好顺序的,所以,我们可以先从最右上角来开始查找,假如最右上角比要找的数字大,那么就说明这一列都比要找的数字大,可以把这一列去掉,以此类推,当右上角比要找的数字小,说明这一行都比要找的数字小了,那么我们可以把这一行给删除了,以此类推。具体代码如下:

 int[][] arrays={{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};
        int rows=arrays.length;
        int cols=arrays[0].length;
        int num=0;
        int r = 0, c = cols - 1; // 从右上角开始
        boolean flag=false;
        while (r <= rows - 1 && c >= 0) {
                if (num == arrays[r][c])
                {System.out.println("有此数字");
                flag=true;
                break;}
                else if (num > arrays[r][c])
                    r++;
                else
                    c--;
            }
        if(flag==false)
        {
            System.out.println("无此数字");
        }
全部评论

相关推荐

02-08 20:56
已编辑
南京工业大学 Java
在等offer的比尔很洒脱:我也是在实习,项目先不说,感觉有点点小熟悉,但是我有点疑问,这第一个实习,公司真的让实习生去部署搭建和引入mq之类的吗,是不是有点过于信任了,我实习过的两个公司都是人家正式早搭好了,根本摸不到部署搭建的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客企业服务