题目:搜索二维矩阵II
题目描述:
搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:
每行的元素从左到右升序排列。
每列的元素从上到下升序排列。
题目分析:
题目中矩阵的特性一定要抓住,每行和每列都是递增的元素,如果采用暴力解法,逐个遍历也可以得到结果,但是时间复杂度O(nm),时间过长。矩阵四个角的元素很特殊,左上角元素是矩阵中的最小值,右下角是矩阵中的最大值,我们选择搜索的时候,从右上角和左下角开始比较好,本题目选择从右上角开始搜索,如果目标值比当前值大,则找同列下行的值,若目标值比当前值小,找同行前列值。
编程语言:Python
class Solution:
def searchMatrix(self,matrix,target):
if len(matrix)==0:
return False
else:
width=len(matrix[0])
high=len(matrix)
r=0
c=width-1
while c>=0 and r<high:
if matrix[r][c]<target:
r+=1
elif matrix[r][c]>target:
c-=1
else:
return True
return False
在leetcode执行情况: