| java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 |
|---|
| 解题思路 |
|---|
- 已知矩阵相对有序,可以用二分搜索,不过和一维数组排序不同,这是二维的
- 每一行都递增,每一列也是递增,所以每一行的最后一个元素都是当前行最大的。每一列的最下面元素也都是当前列最大的
- 所以,随便划分一个矩形区域,左上角都是最小的元素,右下角都是最大的元素。
- 此时就有了两个边界,让我们来找到这个区域的最大值和最小值的中间值(不一定是矩阵中的元素)。然后判断,矩阵中元素谁比这个中间值小。只需要判断每行的后面的元素即可,因为每行递增排序,最后面的一定是最大的,如果最后一个比mid中间值小,那么这一行都比它小,如果倒数第2个元素比mid小,那么这一行前面的元素,一直从前往后到倒数第二个都比mid小。
| 代码:时间复杂度O( n ∗ l o g 2 r − l n*log_2{r-l} n∗lo |
|---|






最低0.47元/天 解锁文章

208

被折叠的 条评论
为什么被折叠?



