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

二维数组中的查找

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

两个重要点

  • 1.每一行都按照从左到右递增的顺序排序
  • 2.每一列都按照从上到下递增的顺序排序
  • 那么起始点a选择右上角*
  • 1.如果a下方位置b小于等于target,由于b>=a,很明显a所在这行就直接淘汰了
  • 2.如果b位置大于target了,说明这一列就淘汰了,再往下走都是大于target的,该往左走找新列了
  • 3.拢共m行n列,每次必定淘汰一行或者淘汰一列,时间复杂度O(m+n)
    //判断数组中是否含有该整数target
    public boolean Find(int target, int [][] array) {
        if(array==null||array.length==0||array[0].length==0) return false;
        //1.能向下就向下,不能向下就向左        
        int rows = array.length;
        int cols = array[0].length;
        int row = 0,col = cols-1;
        while(row>=0&&col>=0){
            if(array[row][col]==target) return true;
            if(row+1<rows&&array[row+1][col]<=target){
                row = row+1;
            }else{
                col = col -1;
            }
        }           
        return false;
    }
全部评论

相关推荐

06-27 15:29
门头沟学院 Java
点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
牛客84809583...:举报了
点赞 评论 收藏
分享
投递长鑫存储等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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