LeetCode刷题记录——第766题(托普利茨矩阵)

版权声明:此BLOG为个人BLOG,内容均来自原创及互连网转载。最终目的为记录自己需要的内容或自己的学习感悟,不涉及商业用途,转载请附上原博客。 https://blog.csdn.net/bulo1025/article/details/88170445

题目描述

如果一个矩阵的每一方向由左上到右下的对角线上具有相同元素,那么这个矩阵是托普利茨矩阵。

给定一个 M x N 的矩阵,当且仅当它是托普利茨矩阵时返回 True。

示例 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]"上的元素不同。

思路分析

  • 分为两部分思考,一部分是左下部分;另一部分是右上部分,如果这两部分遍历完后对角线都相同,返回True
  • 以行的遍历为例,用data记录第i行的第0个元素,如果第i+1行的第1个元素和data不等,直接返回false,用while循环确定范围

代码示例

class Solution(object):
    def isToeplitzMatrix(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: bool
        """
        m = len(matrix)
        n = len(matrix[0])
        for i in range(m):
            data = matrix[i][0]
            j = 0
            while i < m and j < n:
                if matrix[i][j] is not data:
                    return False
                i += 1
                j += 1
        for j in range(n):
            data = matrix[0][j]
            i = 0
            while i < m and j < n:
                if matrix[i][j] is not data:
                    return False
                i += 1
                j += 1
                    
        return True

猜你喜欢

转载自blog.csdn.net/bulo1025/article/details/88170445