跳至主要內容

0766. 托普利茨矩阵

ITCharge大约 1 分钟

0766. 托普利茨矩阵open in new window

  • 标签:数组、矩阵
  • 难度:简单

题目链接

题目大意

描述:给定一个 m×nm \times n 大小的矩阵 matrixmatrix

要求:如果 matrixmatrix 是托普利茨矩阵,则返回 True;否则返回 False

说明

  • 托普利茨矩阵:矩阵上每一条由左上到右下的对角线上的元素都相同。
  • m==matrix.lengthm == matrix.length
  • n==matrix[i].lengthn == matrix[i].length
  • 1m,n201 \le m, n \le 20
  • 0matrix[i][j]990 \le matrix[i][j] \le 99

示例

  • 示例 1:
输入:matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]]
输出:true
解释:
在上述矩阵中, 其对角线为: 
"[9]", "[5, 5]", "[1, 1, 1]", "[2, 2, 2]", "[3, 3]", "[4]"。 
各条对角线上的所有元素均相同, 因此答案是 True
  • 示例 2:
输入:matrix = [[1,2],[2,2]]
输出:false
解释:
对角线 "[1, 2]" 上的元素不同。

解题思路

思路 1:简单模拟

  1. 两层循环遍历矩阵,依次判断矩阵当前位置 (i,j)(i, j) 上的值 matrix[i][j]matrix[i][j] 与其左上角位置 (i1,j1)(i - 1, j - 1) 位置上的值 matrix[i1][j1]matrix[i - 1][j - 1] 是否相等。
  2. 如果不相等,则返回 False
  3. 遍历完,则返回 True

思路 1:代码

class Solution:
    def isToeplitzMatrix(self, matrix: List[List[int]]) -> bool:
        for i in range(1, len(matrix)):
            for j in range(1, len(matrix[0])):
                if matrix[i][j] != matrix[i - 1][j - 1]:
                    return False
        return True

思路 1:复杂度分析

  • 时间复杂度O(m×n)O(m \times n),其中 mmnn 分别是矩阵 matrixmatrix 的行数、列数。
  • 空间复杂度O(m×n)O(m \times n)