74. Search a 2D Matrix
problem description
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:
Integers in each row are sorted from left to right.
The first integer of each row is greater than the last integer of the previous row.
Example 1:
Example 2:
algorithm thought
第一次做这个题目的时候,我首先在行上做二分查找,然后再找到的列上在来一次二分查找。这样时间复杂度是O(lgn),也不是很慢。但是其实这个题目就是需要一种二维的二分查找。二分查找的核心是,通过一次比较,能排除一部分数字。
这题思路是,从左上角或者右下角开始。可以思考一下,为什么从这里出发。然后一步步和target比较,并且逼近target
code
algorithm analysis
这里时间复杂度不一定比两个二分查找更快,二分查找时间复杂度是O(lgn+lgm),这里时间复杂度最坏情况应该是O(m+n);
Last updated