## 766. Toeplitz Matrix

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:trueExplanation: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:falseExplanation:The diagonal "[1, 2]" has different elements.

**Constraints:**

`m == matrix.length`

`n == matrix[i].length`

`1 <= m, n <= 20`

`0 <= matrix[i][j] <= 99`

**Follow up:**

- What if the
`matrix`

is 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
`matrix`

is so large that you can only load up a partial row into the memory at once?

## Rust Solution

```
struct Solution;
impl Solution {
fn is_toeplitz_matrix(matrix: Vec<Vec<i32>>) -> bool {
let n = matrix.len();
let m = matrix[0].len();
for i in 0..n - 1 {
for j in 0..m - 1 {
if matrix[i][j] != matrix[i + 1][j + 1] {
return false;
}
}
}
true
}
}
#[test]
fn test() {
let matrix: Vec<Vec<i32>> = vec_vec_i32![[1, 2, 3, 4], [5, 1, 2, 3], [9, 5, 1, 2]];
assert_eq!(Solution::is_toeplitz_matrix(matrix), true);
let matrix: Vec<Vec<i32>> = vec_vec_i32![[1, 2], [2, 2]];
assert_eq!(Solution::is_toeplitz_matrix(matrix), false);
}
```

Having problems with this solution? Click here to submit an issue on github.