


You are given a matrix of size N * M. You have to find out whether the matrix is Toeplitz or not.
A Matrix is said to be Toeplitz if every diagonal from top-left to bottom-right has the same elements.
You are given the matrix ‘MAT’ of size N * M.Your task is to find out whether it is Toeplitz or not.
For Example The given matrix is Toeplitz:
The first line of the input contains an integer, 'T,’ denoting the number of test cases.
The first line of each test case contains two integers,' N’ and ‘M’ denoting the number of rows and columns.
The next line of each test case has ‘N’ lines that have M values corresponding to the matrix ‘MAT’.
Output Format:
For each test case, print ‘YES’ or ‘NO’ whether the matrix is Toeplitz or not.
Print the output of each test case in a separate line.
Note:
You do not need to print anything. It has already been taken care of. Just implement the given function.
1 <= T <= 10
1 <= N <= 1000.
1 <= M <= 1000.
Time limit: 1 sec
2
3 3
2 1 3
1 2 1
5 1 2
4 3
0 0 0
7 0 1
1 7 0
0 1 7
YES
NO
For the first test case,
All the diagonals of the given matrix has same values.Hence, the given matrix is Toeplitz.
For the second test case:
The diagonal with cells (0,1) and (1,2) does not have the same elements. Hence, the matrix is not Toeplitz.
2
4 3
10 10 10
4 10 10
2 10 10
4 4 8
3 4
5 10 4 10
5 5 10 4
9 5 5 10
NO
YES
Check every diagonal.
In this approach, we will iterate all the diagonals and if we found any element mismatched, the matrix is not Toeplitz. Otherwise, the matrix is Toeplitz.
If all diagonal elements are identical then they should follow :
MAT[i][j] == MATt[i-1][j-1].
Algorithm:
O(M*N), where ‘N’ and ‘M’ represent the rows and columns of the matrix.
In this approach, each cell of the given matrix only once and checking the diagonal element. Hence, the overall time complexity is O(M*N).
O(1).
In this approach, we are using constant space. Hence, the overall space complexity is O(1).