Leetcode 托普利茨矩阵

该博客讨论了如何解决LeetCode中的第766题,即检查一个矩阵是否为托普利茨矩阵。托普利茨矩阵的定义是,从左上到右下的对角线上的元素都相同。提供的解决方案通过遍历矩阵的行,比较相邻行的对应元素来判断条件,实现了O(m-1)的时间复杂度和O(1)的空间复杂度。博客提供了Python和PHP两种语言的代码实现。
摘要由CSDN通过智能技术生成
WechatIMG503.jpeg

题目描述

leetcode 第766题:托普利茨矩阵
给你一个 m x n 的矩阵 matrix 。如果这个矩阵是托普利茨矩阵,返回 true ;否则,返回 false 。
如果矩阵上每一条由左上到右下的对角线上的元素都相同,那么这个矩阵是 托普利茨矩阵 。
示例:

ex1.jpg

输入: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 。

解题方法

遍历原址题解

  • 解题思路

定义m,n分别存储矩阵matrix的行数和列数
在[0,m-1)区间遍历matrix
判断当前行去掉最后一个元素和下一行去掉第一个元素是否相等,不等返回false
遍历完成后,返回true

  • 复杂度

时间复杂度:O(m-1),m为矩阵matrix的行数。
空间复杂度:O(1)

  • 代码实现

python3

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

php

class Solution {
    function isToeplitzMatrix($matrix) {
        $m = count($matrix);
        $n = count($matrix[0]);
        if($m==0) return true;
        for($i=0;$i<$m-1;$i++){
            if(array_slice($matrix[$i],0,$n-1)!=array_slice($matrix[$i+1],1)){
                return false;
            }
        }
        return true;
    }
}
  • 文字草稿

matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]]
第1次遍历,第1行去掉最后一个元素:[1,2,3],第2行去掉第一个元素:[1,2,3]
第2次遍历,第2行去掉最后一个元素:[5,1,2],第3行去掉第一个元素:[5,1,2]
遍历完成,该矩阵是托普利茨矩阵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值