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

思路:
1.二分法,从矩阵右上角开始,如果这个数比target大,那么target位于该数下面,行数向下偏移,即增加。反之如果小,那说明这个数在当前数的左边,列数减小,即列数减1
2.注意行数和列数不要搞错了,矩阵行数等于数组array.length,列数等于array[0].length

    public boolean Find(int target, int [][] array) {
        if(array == null ||array.length == 0 || array[0].length == 0){
            return false;
        }
        //
        int cols = array[0].length;
        int rows = array.length;
        int i = 0, j = cols-1;
        while(i < rows && j >= 0){
            if(target == array[i][j]){
                return true;
            }else if(target > array[i][j]){
                i++;
            }else{
                j -- ;
            }
        }
        return false;
    }
    
}
面试必刷TOP101 文章被收录于专栏

面试必刷TOP101

全部评论

相关推荐

joe2333:怀念以前大家拿华为当保底的日子
点赞 评论 收藏
分享
11-24 11:23
门头沟学院 C++
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务