Welcome to Subscribe On Youtube
766. Toeplitz Matrix
Description
Given an m x n matrix, return true if the matrix is Toeplitz. Otherwise, return false.
A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same elements.
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.
Constraints:
m == matrix.lengthn == matrix[i].length1 <= m, n <= 200 <= matrix[i][j] <= 99
Follow up:
- What if the
matrixis stored on disk, and the memory is limited such that you can only load at most one row of the matrix into the memory at once? - What if the
matrixis so large that you can only load up a partial row into the memory at once?
Solutions
-
class Solution { public boolean isToeplitzMatrix(int[][] matrix) { int m = matrix.length, n = matrix[0].length; for (int i = 1; i < m; ++i) { for (int j = 1; j < n; ++j) { if (matrix[i][j] != matrix[i - 1][j - 1]) { return false; } } } return true; } } -
class Solution { public: bool isToeplitzMatrix(vector<vector<int>>& matrix) { int m = matrix.size(), n = matrix[0].size(); for (int i = 1; i < m; ++i) { for (int j = 1; j < n; ++j) { if (matrix[i][j] != matrix[i - 1][j - 1]) { return false; } } } return true; } }; -
class Solution: def isToeplitzMatrix(self, matrix: List[List[int]]) -> bool: m, n = len(matrix), len(matrix[0]) return all( matrix[i][j] == matrix[i - 1][j - 1] for i in range(1, m) for j in range(1, n) ) -
func isToeplitzMatrix(matrix [][]int) bool { m, n := len(matrix), len(matrix[0]) for i := 1; i < m; i++ { for j := 1; j < n; j++ { if matrix[i][j] != matrix[i-1][j-1] { return false } } } return true } -
/** * @param {number[][]} matrix * @return {boolean} */ var isToeplitzMatrix = function (matrix) { const m = matrix.length; const n = matrix[0].length; for (let i = 1; i < m; ++i) { for (let j = 1; j < n; ++j) { if (matrix[i][j] != matrix[i - 1][j - 1]) { return false; } } } return true; }; -
function isToeplitzMatrix(matrix: number[][]): boolean { const [m, n] = [matrix.length, matrix[0].length]; for (let i = 1; i < m; ++i) { for (let j = 1; j < n; ++j) { if (matrix[i][j] !== matrix[i - 1][j - 1]) { return false; } } } return true; } -
impl Solution { pub fn is_toeplitz_matrix(matrix: Vec<Vec<i32>>) -> bool { let (m, n) = (matrix.len(), matrix[0].len()); for i in 1..m { for j in 1..n { if matrix[i][j] != matrix[i - 1][j - 1] { return false; } } } true } }