九章算法官网-原文网址
http://www.jiuzhang.com/problem/11/
题目
递增矩阵是指每一行和每一列均从小到大排列矩阵。给你一个递增矩阵A和整数x,
设计一个算法在A中查找x,找不到返回无解。
解答
从矩阵的右上角出发(左下角同理),如果该数<x,则往下走;如果>x,则往左走。时间复杂度O(n)
面试官角度
如果是一个有序的数组中找一个数,那么自然是用O(logn)的二分法。升级为有序矩阵之后,自然也容易想到二分法。但进一步想会发现,如果从矩阵中间选择一个数,每次只能去掉1/4,而且破坏了矩阵的形状,无法进行递归。因此二分的思路就变得不可行了。从而将复杂度提高一点想一想O(n)的方法,思路上仍然是根据与x比较大小来决定扔掉一些数,于是中间不行,就尝试4个角,从而发现可以从右上角出发来进行查找。