这道题的核心思路应该是怎么快速排除无效的
如果为null怎么有length求!会报错
这里也可以用[]row来进行遍历,因为每一行都是升序排序的,所以对每一行用二分查找的话,复杂度就是O(NLog(M))。绝对不能用暴力查找,复杂度是O(M*N)
除此之外有个更好的办法,就是讲这个问题转化为树的搜索问题。左下角的数是该行的最小值,该列的最大值。所以如果target比左下角还小,则肯定比这一行都小,所以可以上移一行寻找;如果target比左下角还大,则肯定比这一列都大,所以可以右移一列寻找
最后按照书上的方法其实也就类似上图,左下角和右上角分别有一方向最大一方向最小的优点。但是要注意,首先要排除特殊情况就是长度为0时,不然取[0]这个元素时就会有问题!!