# 【LEETCODE】74-Search a 2D Matrix [Python]

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.

For example,

Consider the following matrix:

[

[1,   3,  5,  7],

[10, 11, 16, 20],

[23, 30, 34, 50]

]

Given target = 3, return true.

http://www.cnblogs.com/zuoyuan/archive/2014/06/05/3770061.html

Python

class Solution(object):
def searchMatrix(self, matrix, target):
"""
:type matrix: List[List[int]]
:type target: int
:rtype: bool
"""

row=0
m=len(matrix)
n=len(matrix[0])

if target>=matrix[m-1][0]:<span style="white-space:pre">		</span>#先用 target 和各行的第一个元素比较，以锁定搜索的行 row
row=m-1
else:
for i in range(len(matrix)):
if target<matrix[i][0]:
row=i-1
break
if row<0:
return False

j=0<span style="white-space:pre">					</span>#在 row 那行进行搜索
while j<n:
if matrix[row][j]==target:
return True
elif matrix[row][j]>target:
return False
else:
j+=1

return False

• 广告
• 抄袭
• 版权
• 政治
• 色情
• 无意义
• 其他

120