题解 | #二维数组中的查找#

二维数组中的查找

http://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e

public class Solution {
    public boolean Find(int target, int [][] array) {
      /* 
      首先是条件判断,如果这个二维数组的长度为0,说明数组为空,那么就不用再进行查找操作了。
      直接返回false
      */
        int m = array.length;
        int n = array[0].length;
        if (m == 0 || n == 0) {
            return false;
        } 
      /*
       每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
       这个特点很重要,本题能使用二分查找的思想就是基于这个特点。
       思路就是二分查找从右上角开始,因为数组严格按照每行每列递增的顺序,
       所以如果当前值大于目标值,我们需要往左边找,所以就是 r =r-1;
           如果当前值小于目标值,我们需要往下找,所以就是 l =l+1;
           如果当前值等于目标值,说明找到了,直接返回true;
        当循环执行完毕后,还没有找到,说明该元素在数组中不存在,我们返回false就行。
      */
        int l =0, r = n - 1;//r为右上角元素
        while (l < m && r >= 0) {
            if (array[l][r] == target) {
                return true;
            } else if (array[l][r] > target) {
                -- r;
            } else {
                ++ l;
            }
        }
        return false;
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 15:58
投个小米提前批试试水,先投一个岗位看看形势,不行就再沉淀一下投第二个岗位,莫辜负
Java抽象带篮子:我嘞个骚刚,已经开始研发6g了吗
投递小米集团等公司7个岗位
点赞 评论 收藏
分享
07-07 12:25
门头沟学院 Java
程序员牛肉:你这个智邮公司做的就是那个乐山市税务系统的服务吗?
点赞 评论 收藏
分享
Lorn的意义:1.你这根本就不会写简历呀,了解太少了 2.你这些项目经历感觉真的没啥亮点啊,描述的不行,重写书写一下让人看到核心,就继续海投 注意七八月份ofer还是比较多的,越往后机会越少,抓住时机,抓紧检查疏漏,加油查看图片
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 13:05
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务