mycode time limited
def searchMatrix(matrix, target): def deal(data): if not data: return False row = len(data) col = len(data[0]) #print('row,col',row,col) for r in range(row): for c in range(col): #print(r,c) if data[r][c] == target: return True elif data[r][c] > target: deal(data[r+1:][:c]) if deal(matrix) :return True else: return False 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] ] searchMatrix(matrix, 5)
参考:
1、while循环中问题的关键是,如何不断缩小搜索的范围? -- 从右上角or左下角开始是最好的,因为两个方向的变化是一个变大一个变小
class Solution(object): def searchMatrix(self, matrix, target): """ :type matrix: List[List[int]] :type target: int :rtype: bool """ if not matrix or not matrix[0]: return False rows = len(matrix) cols = len(matrix[0]) row, col = 0, cols - 1 while True: if row < rows and col >= 0: if matrix[row][col] == target: return True elif matrix[row][col] < target: row += 1 else: col -= 1 else: return False
2、巧用pyhton
#暴力方法 class Solution(object): def searchMatrix(self, matrix, target): """ :type matrix: List[List[int]] :type target: int :rtype: bool """ return any(target in row for row in matrix)