766.托普利茨矩阵
题目:[https://leetcode-cn.com/problems/toeplitz-matrix/description/]
思路:托普利茨矩阵的矩阵(以下简称托阵)的特点是该矩阵所有左上-右下的值都相等,题目给出一个矩阵,要求判定是否是托阵。可以发现,对于每一行元素来说,首尾元素与前行无关(相当于新添加都元素),同时前行都尾元素与本行无关(想当与删除尾元素)。由此可见,只要检查每一行除尾元素都前面元素,和下一行对应元素是否相等即可。
代码:
class Solution {
public:
bool isToeplitzMatrix(vector<vector<int>>& matrix) {
if (matrix.size()==1||matrix[0].size()==1) {//特殊情况独行或者独列
return true;
}
for (int i=0; i!=matrix.size()-1; ++i) {//i代表行数,只用检查到倒数第二行
for (int j=0; j!=matrix[i].size()-1; ++j) {//j代表列数,即第i行第j个元素,注意:从零开始,不用检查尾元素
if (matrix[i][j]!=matrix[i+1][j+1]) {
return false;
}
}
}
return true;
}
};
讨论区[https://leetcode.com/problems/toeplitz-matrix/solution/]
反思:1、讨论区思路:对于两个坐标(r1,c1)(r2,c2)到两个位置,当r1-c1=r2-c2时,两个值是处于一条对角线上。那么,我们可以把记一个值为对角线r-c的值,然后检查改对角线值是否和值相等,只要有不想等的值即返回false。

浙公网安备 33010602011771号