【LeetCode每日一题】——766.托普利茨矩阵

chatgpt/2023/9/27 5:31:05

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【题目提示】
  • 七【题目进阶】
  • 八【解题思路】
  • 九【时间频度】
  • 十【代码实现】
  • 十一【提交结果】

一【题目类别】

  • 矩阵

二【题目难度】

  • 简单

三【题目编号】

  • 766.托普利茨矩阵

四【题目描述】

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

五【题目示例】

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

六【题目提示】

  • m = = m a t r i x . l e n g t h m == matrix.length m==matrix.length
  • n = = m a t r i x [ i ] . l e n g t h n == matrix[i].length n==matrix[i].length
  • 1 < = m , n < = 20 1 <= m, n <= 20 1<=m,n<=20
  • 0 < = m a t r i x [ i ] [ j ] < = 99 0 <= matrix[i][j] <= 99 0<=matrix[i][j]<=99

七【题目进阶】

  • 如果矩阵存储在磁盘上,并且内存有限,以至于一次最多只能将矩阵的一行加载到内存中,该怎么办?
  • 如果矩阵太大,以至于一次只能将不完整的一行加载到内存中,该怎么办?

八【解题思路】

  • 本题的思路比较简单,我们无需逐个对角线去比较,只需要比较前一行除了最后一个元素和后一行除了第一个元素后剩余的元素是否想等
  • 因为如果是托普利茨矩阵的话,下一行一定是上一行向右移动一个位置之后形成的矩阵,所以上一行的最后一个元素和下一行的第一个元素,可以无须判断,因为上一行的最后一个元素被移出了,下一行的第一个元素单独成为对角线
  • 最后返回结果即可

九【时间频度】

  • 时间复杂度: O ( m ∗ n ) O(m * n) O(mn) m 、 n m、n mn分别为传入数组的行数和列数
  • 空间复杂度: O ( 1 ) O(1) O(1)

十【代码实现】

  1. Java语言版
class Solution {public boolean isToeplitzMatrix(int[][] matrix) {int m = matrix.length;int n = matrix[0].length;for(int i = 0;i < m - 1;i++){for(int j = 0;j < n - 1;j++){if(matrix[i][j] != matrix[i+1][j+1]){return false;}}}return true;}
}
  1. C语言版
bool isToeplitzMatrix(int** matrix, int matrixSize, int* matrixColSize)
{int m = matrixSize;int n = matrixColSize[0];for(int i = 0;i < m - 1;i++){for(int j = 0;j < n - 1;j++){if(matrix[i][j] != matrix[i+1][j+1]){return false;}}}return true;
}
  1. Python语言版
class Solution:def isToeplitzMatrix(self, matrix: List[List[int]]) -> bool:m = len(matrix)n = len(matrix[0])for i in range(m - 1):for j in range(n - 1):if matrix[i][j] != matrix[i+1][j+1]:return Falsereturn True
  1. C++语言版
class Solution {
public:bool isToeplitzMatrix(vector<vector<int>>& matrix) {int m = matrix.size();int n = matrix[0].size();for(int i = 0;i < m - 1;i++){for(int j = 0;j < n - 1;j++){if(matrix[i][j] != matrix[i+1][j+1]){return false;}}}return true;}
};

十一【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. C语言版
    在这里插入图片描述

  3. Python语言版
    在这里插入图片描述

  4. C++语言版
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-5314550.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

【html本地工具】html+JS实现一个超好看的绘画板/涂鸦板,带画笔、矩形、圆形、直线、文本、橡皮擦,有撤销、恢复、保存功能

前言 大家好&#xff0c;这里是符华&#xff0c;今天我们来用纯htmljs实现一个绘画板&#xff0c;需要有以下几个功能&#xff1a; 画笔工具 自由画笔矩形圆形直线文本输入 画笔和橡皮擦调整大小粗细调整画笔颜色橡皮擦保存为图片撤销恢复&#xff08;反撤销&#xff09; 实…

服务器运行python程序的使用说明

服务器的使用与说明 文章目录 服务器的使用与说明1.登录2.Python的使用2.1 服务器已安装python32.2 往自己的用户目录安装python31.首先下载安装包2.解压缩3.编译与安装 2.3 新建环境变量2.4 测试 3 创建PBS作业并提交 1.登录 windowsr打开运行命令窗口&#xff0c;在运行框中…

获取安卓模拟器截图

最简单的方法当然是使用adb adb shell screencap -p >screenshot.png 不过有些app会限制adb进行截图&#xff0c;这个时候adb截屏为黑屏 此时有两种方法获取截图 第一使用模拟器自带截图快捷键,获取安卓自带截图键&#xff0c;逍遥模拟器为altF3 可模拟键盘输入按键&#…

Rust- FFI (Foreign Function Interface)

Foreign Function Interface (FFI) is a mechanism that allows code written in one language to call code written in another language. With FFI, a program can use libraries and capabilities from another language, often allowing for performance optimizations o

QtC++ 技术分析4 - 流、d-pointer隐式共享以及容器迭代器

目录 QT 中的流文件系统与底层文件操作文件系统类 QFile QTextStreamQDataStreamQLocale 隐式共享与 d-pointer隐式共享d-pointer 在隐式共享中的应用二进制代码兼容d-pointer 模式实现 Qt 容器及迭代器QTL 概述几种常见的迭代器及其对应类型QTL 容器对应迭代器通用算法函子&am…

什么是Java中的同步器和锁?

Java中的同步器和锁是用来控制多线程访问共享资源的机制。在多线程编程中&#xff0c;如果多个线程同时访问共享资源&#xff0c;就可能导致数据竞争和不一致的结果。为了避免这种情况&#xff0c;可以使用同步器和锁来确保在任何时候只有一个线程可以访问共享资源。 下面是一…

关于我对刚开始学Java的小白想分享的内容:

编程是很有魅力的&#xff0c;让很多人为之痴迷 如果你是初学者&#xff0c;俗称小白&#xff0c;不妨看看下述内容&#xff1a; 文章目录 1. Java 简介1.1 特性介绍1.简单性2. 面向对象3. 分布式4. 健壮性5. 安全性6. 体系结构中立7. 可移植性8. 解释型9. 高性能10. 多线程11…

第七篇:k8s集群使用helm3安装Prometheus Operator

安装Prometheus Operator 目前网上主要有两种安装方式&#xff0c;分别为&#xff1a;1. 使用kubectl基于manifest进行安装 2. 基于helm3进行安装。第一种方式比较繁琐&#xff0c;需要手动配置yaml文件&#xff0c;特别是需要配置pvc相关内容时&#xff0c;涉及到的yaml文件太…
推荐文章