algorithm notes: leetcode#766 toeplitz matrix

Problem


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:
In the above grid, the diagonals are:
"[9]", “[5, 5]”, “[1, 1, 1]”, “[2, 2, 2]”, “[3, 3]”, “[4]”.
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].

Solution


Analysis

Iterate each element in the matrix and check whether it equals to its top-left neighbor. Because there is no top-left neighbor for elements in the first row and first column, just traverse elements from the second row and second column.

Python implementation

1
2
3
4
5
6
7
8
9
10
11
class :
def isToeplitzMatrix(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: bool
"""
for i in range(1, len(matrix)):
for j in range(1, len(matrix[0])):
if matrix[i][j] != matrix[i-1][j-1]:
return False
return True

Java implementation

1
2
3
4
5
6
7
8
9
10
11
12
class {
public boolean isToeplitzMatrix(int[][] matrix) {
for(int i = 1; i < matrix.length; i++){
for(int j = 1; j < matrix[0].length; j++){
if(matrix[i][j] != matrix[i-1][j-1]){
return false;
}
}
}
return true;
}
}

Time complexity

O(MN).

Space complexity

O(1).


766. Toeplitz Matrix
(中文版) 算法笔记: 力扣#766 托普利茨矩阵