问题描述
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 in ascending from left to right.
- Integers in each column are sorted in ascending from top to bottom.
Example:
Consider the following matrix:
[
[1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30]
]
Given target
= 5, return true
.
Given target
= 20, return false
.
解题思路
先找到 target
可能在的行,然后在行内使用二分查找。
1 | class Solution: |
进阶
对整个矩阵进行二分查找,或者进行分块儿查找。首先看整个矩阵 ((0, 0), (m-1, n-1))
,中点 ((m-1)//2, (n-1)//2)
通过对比中点数据大小和target大小,确定target在哪个区域。
1 | class Solution: |
Python耍赖做法
1 | class Solution: |