九章算法面试题76 搜索二维矩阵

九章算法官网-原文网址

http://www.jiuzhang.com/problem/77/

题目

写出一个高效的算法来搜索 m × n矩阵中的值。

这个矩阵具有以下特性:

1) 每行中的整数从左到右是排序的。

2) 每行的第一个数大于上一行的最后一个整数。


在线测试本题

http://www.lintcode.com/zh-cn/problem/search-a-2d-matrix/


解答

这道题虽然看似矩阵问题,其实最终可以转换为一维数组,每一行按照顺序已经排好序了同时上一行末尾的元素比下一行第一个元素大, 那么其实可以依次把上一行的末尾接在下一行数组前面,这样最后我们就把二维矩阵转化为一维的排序数组,而二维矩阵第i行第j列,在一维数组的第i*m+j个位置, 然后由于一维排序数组已经排序好,所以我们只用2分查找在一维排序数组里面找到相对应的值就好。


参考代码

http://www.jiuzhang.com/solutions/search-a-2d-matrix/

你可能感兴趣的:(九章算法面试题)