A Toeplitz (or diagonal-constant) matrix is a matrix in which each descending diagonal from left to right is constant, i.e., all elements in a diagonal are the same. Given a rectangular matrix mat, your task is to complete the function isToeplitz which returns 1 if the matrix is Toeplitz otherwise, it returns 0.
Examples:
Input:
mat = [[6, 7, 8],
[4, 6, 7],
[1, 4, 6]]
Output: 1
Explanation: The test case represents a 3x3 matrix 6 7 8 4 6 7 1 4 6 Output: 1(True) as values in all downward diagonals from left to right contain the same elements.
Input:
mat = [[1,2,3],
[4,5,6]]
Output: 0
Explanation: Matrix of order 2x3 will be 1 2 3 4 5 6 Output: 0(False) as values in all diagonals are not the same.
Constraints:
1<=mat.size,mat[0].size<=40
1<=mat[i][j]<=100
Expected time complexity: O(n*m)
Expected space complexity: O(1)
Approach 01:
-
C++
-
Python
#include <vector> using namespace std; bool isToepliz(vector<vector<int>>& matrix) { int num_rows = matrix.size(); int num_cols = matrix[0].size(); for (int row = 0; row < num_rows; row++) { for (int col = 0; col < num_cols; col++) { if (row == col) { if (matrix[row][col] != matrix[0][0]) { return false; } } } } return true; }
from typing import List def isToepliz(matrix: List[List[int]]) -> bool: num_rows = len(matrix) num_cols = len(matrix[0]) for row in range(num_rows): for col in range(num_cols): if row == col: if matrix[row][col] != matrix[0][0]: return False return True