题目描述
编写一个高效的算法来搜索 m x
n 矩阵 matrix
中的一个目标值 target
。该矩阵具有以下特性:
- 每行的元素从左到右升序排列。
- 每列的元素从上到下升序排列。
示例 1:
输入: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]], target = 5
输出:true
示例 2:
输入: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]], target = 20
输出:false
思路
1)从第一行,最后一列开始遍历
2)如果等于target,就返回true
3)如果大于target,就col-=1
4)如果小于target,就row+=1
python
class Solution(object):
def searchMatrix(self, matrix, target):
"""
:type matrix: List[List[int]]
:type target: int
:rtype: bool
"""
rows = len(matrix)
cols = len(matrix[0])
row = 0
col = cols-1
while row<rows and col>=0:
if matrix[row][col]==target:
return True
elif matrix[row][col] > target:
col -= 1
else:
row+=1
return False
if __name__ == '__main__':
s = Solution()
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]]
target = 5
print(s.searchMatrix(matrix, target))