互助盘网站开发,wordpress商品资源,南宁小程序建设,室内设计学校排名榜给你一个 m x n 的矩阵 matrix 。如果这个矩阵是托普利茨矩阵#xff0c;返回 true #xff1b;否则#xff0c;返回 false 。
如果矩阵上每一条由左上到右下的对角线上的元素都相同#xff0c;那么这个矩阵是 托普利茨矩阵 。
示例 1#xff1a;
输入#xff1a;matr…给你一个 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 matrix.length n matrix[i].length 1 m, n 20 0 matrix[i][j] 99
思路
正常来讲最直观的做法应该就是第一行的每个元素开始向右下方遍历看看是否相等然后再沿着第一列开始向右下方遍历看看是否相等。
但其实你仔细思考一下就会发现不需要这么麻烦满足题意的最基本的条件不就是每个元素都跟左上方的元素相等么如果存在的话。
而且第一行和第一列是不用判断的因为不存在左上方元素。
代码
class Solution {
public:bool isToeplitzMatrix(vectorvectorint matrix) {int n matrix.size();int m matrix[0].size();for(int i 0 ; i n ; i){for(int j 0 ; j m ; j){if(i-1 0 j-1 0){if(matrix[i-1][j-1] matrix[i][j])continue;elsereturn false;}}}return true;}
};