剑指 Offer 04. 二维数组中的查找

 一道做过而且有印象的题目

再做竟然没搞出来,真是。。。

归根结底,是这个矩阵消除行列的方式不直观,直到我看到了一张图

 我原来老是纠结在左边那条对角线上,而且感觉这种想法也挺直观的

但是这图一画出来就懂了

这确实就是二叉搜索树

于是代码就很简单了

class Solution {
    public boolean findNumberIn2DArray(int[][] matrix, int target) {
        if(matrix==null||matrix.length==0||matrix[0].length==0)
        {return false;}

        int m=matrix.length;
        int n=matrix[0].length;

        int i=m-1;
        int j=0;

        while(i>=0&&i<m&&j>=0&&j<n)
        {
            if(matrix[i][j]==target)
            {return true;}
            else if(matrix[i][j]>target)
            {i--;}
            else{j++;}
        }
        return false;

    }
}

这道题我不可能再做不出来了。。。

原文地址:https://www.cnblogs.com/take-it-easy/p/14578122.html