[LeetCode] 766. Toeplitz Matrix_Easy tag: array
2021-08-22 02:34 Johnson_强生仔仔 阅读(36) 评论(0) 收藏 举报Given an m x n matrix, return true if the matrix is Toeplitz. Otherwise, return false.
A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same elements.
Example 1:

Input: matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]] Output: true Explanation: In the above grid, the diagonals are: "[9]", "[5, 5]", "[1, 1, 1]", "[2, 2, 2]", "[3, 3]", "[4]". In each diagonal all elements are the same, so the answer is True.
Example 2:

Input: matrix = [[1,2],[2,2]] Output: false Explanation: The diagonal "[1, 2]" has different elements.
Constraints:
m == matrix.lengthn == matrix[i].length1 <= m, n <= 200 <= matrix[i][j] <= 99
Follow up:
- What if the
matrixis stored on disk, and the memory is limited such that you can only load at most one row of the matrix into the memory at once? - What if the
matrixis so large that you can only load up a partial row into the memory at once?
Ideas:
1. T: O(m * n); S: O(m * n) 将r - c 作为key来存入到dictionary里面, 如果r - c 在dictionary,再比较是否相等
class Solution: def isToeplitzMatrix(self, matrix: List[List[int]]) -> bool: group = dict() for r, row in enumerate(matrix): for c, val in enumerate(row): if r - c not in group: group[r - c] = val else: if val != group[r - c]: return False return True
2. T: O(m * n) S: O(1), 如果r > 0 and c > 0 , 将它与左上角的元素进行比较
class Solution: def isToeplitzMatrix(self, matrix: List[List[int]]) -> bool: for r, row in enumerate(matrix): for c, val in enumerate(row): if r == 0 or c == 0 or matrix[r][c] == matrix[r - 1][c - 1]: continue else: return False return True
浙公网安备 33010602011771号