题目描述:

A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same element.

Now given an M x N matrix, return True if and only if the matrix is Toeplitz.

Example 1:

Input: matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]]
Output: True
Explanation:
1234
5123
9512 In the above grid, the diagonals are "[9]", "[5, 5]", "[1, 1, 1]", "[2, 2, 2]", "[3, 3]", "[4]", and 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.

Note:

  1. matrix will be a 2D array of integers.
  2. matrix will have a number of rows and columns in range [1, 20].
  3. matrix[i][j] will be integers in range [0, 99].

要完成的函数:

bool isToeplitzMatrix(vector<vector<int>>& matrix)

说明:

1、这道题题意很清晰,给定一个矩阵,判断矩阵上的所有对角线,每一条对角线上的元素值是不是都相等,比如题目中给的例1,就是一个满足条件的矩阵。最后返回true或者false,表示矩阵满不满足条件。

2、笔者最开始觉得这道题又是比较麻烦的题目,又要设置行i列j的条件限制,然后一一比较元素值。但后来重新扫了一遍题目叙述,发现可以逐行地搬下来比较,没有被比较到的元素,也刚好就是不用比较的。

举个例子,第一行除了最后一个之外的其余元素,都搬下来与第二行的元素进行比较,而第二行第一个元素不会被比较到,也刚好就是不用比较的,只需要之后跟第三行比较。

所以,逻辑清晰,代码如下:

    bool isToeplitzMatrix(vector<vector<int>>& matrix)
{
int row=matrix.size(),col=matrix[0].size();
int i=0,j;
while(i<row-1)//这里是row-1,最后一行不用再比较
{
j=0;
while(j<col-1)//col-1,每行最后一个元素不用比较
{
if(matrix[i][j]!=matrix[i+1][j+1])
return false;
j++;
}
i++;
}
return true;
}

上述代码实测20ms,beats 77.39% of cpp submissions。

leetcode-766-Toeplitz Matrix(每一条对角线元素的比较)的更多相关文章

  1. LeetCode 766 Toeplitz Matrix 解题报告

    题目要求 A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same element. Now ...

  2. LeetCode - 766. Toeplitz Matrix

    A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same element. Now given ...

  3. 766. Toeplitz Matrix - LeetCode

    Question 766. Toeplitz Matrix Solution 题目大意: 矩阵从每条左上到右下对角线上的数都相等就返回true否则返回false 思路: 遍历每一行[i,j]与[i+1 ...

  4. 【LEETCODE】45、766. Toeplitz Matrix

    package y2019.Algorithm.array; /** * @ProjectName: cutter-point * @Package: y2019.Algorithm.array * ...

  5. 【Leetcode_easy】766. Toeplitz Matrix

    problem 766. Toeplitz Matrix solution1: class Solution { public: bool isToeplitzMatrix(vector<vec ...

  6. 【LeetCode】766. Toeplitz Matrix 解题报告

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:两两比较 方法二:切片相等 方法三:判断每条 ...

  7. [LeetCode&Python] Problem 766. Toeplitz Matrix

    A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same element. Now given ...

  8. 766. Toeplitz Matrix

    A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same element. Now given ...

  9. 766. Toeplitz Matrix斜对角矩阵

    [抄题]: A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same element. Now ...

随机推荐

  1. Spring学习笔记(四)--MVC概述

    一. 飞机 最近马来西亚航空370号班机事故闹得沸沸扬扬,情节整的扑朔迷离,连我在钻研springMVC平和的心情都间接的受到了影响.正当我在想这个MVC的处理过程可以怎样得到更好的理解呢?灰机,灰机 ...

  2. ubuntu16.04 安装opencv3

    (opencvC++) luo@luo-ThinkPad-W540:20181205$ conda install --channel https://conda.anaconda.org/menpo ...

  3. 29-中国剩余定理CRT

    https://blog.csdn.net/u010468553/article/details/38346195 中国剩余定理[数论] 2014年08月02日 12:55:59 阅读数:2351 中 ...

  4. 908G New Year and Original Order

    传送门 分析 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string ...

  5. python实现高效率的排列组合算法-乾颐堂

    组合算法 本程序的思路是开一个数组,其下标表示1到m个数,数组元素的值为1表示其下标 代表的数被选中,为0则没选中. 首先初始化,将数组前n个元素置1,表示第一个组合为前n个数. 然后从左到右扫描数组 ...

  6. c语言的函数可以这样写,你见过吗?

    c语言的函数可以这样写,你见过吗?真的可以编译通过的.

  7. Redis 数据库学习

    安装(mac) 使用homebrew安装,命令是:brew install redis. 安装完成后启动命令:brew services start redis. 使用命令redis-cli进入red ...

  8. cef相关

    chrome命令行参数:https://www.cnblogs.com/hushaojun/p/5981646.html cef启动调试,启动的命令行:--disable-web-security - ...

  9. C#中深复制和浅复制

    C# 支持两种类型:“值类型”和“引用类型”. 值类型(Value Type)(如 char.int 和 float).枚举类型和结构类型. 引用类型(Reference Type) 包括类 (Cla ...

  10. C# JSON使用过程中开发的小工具

    我在用JSON的过程中,经常要去看一下JSON的结构,而JSON串大不部分时候都是未格式化的数据,一次我不得不用一些网页上的在线解析和格式化工具来进行格式化查看,但是这些网页有时候并不好用:因此就结合 ...