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:
1 2 3 4 5 6 7 8 |
Input: matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]] Output: True Explanation: 1234 5123 9512 In the above grid, the diagonals are "[9]", "[5, 5]", "[1, 1, 1]", "[2, 2, 2]", "[3, 3]", "[4]", and in each diagonal all elements are the same, so the answer is True. |
Example 2:
1 2 3 4 |
Input: matrix = [[1,2],[2,2]] Output: False Explanation: The diagonal "[1, 2]" has different elements. |
Note:
matrix
will be a 2D array of integers.matrix
will have a number of rows and columns in range[1, 20]
.matrix[i][j]
will be integers in range[0, 99]
.
Idea:
Check m[i][j] with m[i-1][j-1]
Solution: Brute Force
Time complexity: O(n*m)
Space complexity: O(1)
C++
1 2 3 4 5 6 7 8 9 10 11 |
// Author: Huahua // Running time: 32 ms class Solution { public: bool isToeplitzMatrix(vector<vector<int>>& matrix) { for (int i = 1; i < matrix.size(); ++i) for (int j = 1; j < matrix[0].size(); ++j) if (matrix[i][j] != matrix[i - 1][j - 1]) return false; return true; } }; |
Java
1 2 3 4 5 6 7 8 9 10 |
// Author: Huahua // Running time: 29 ms class Solution { 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; } } |
Python3
1 2 3 4 5 6 7 8 9 10 11 12 |
""" Author: Huahua Running time: 99 ms """ class Solution: def isToeplitzMatrix(self, matrix): m = len(matrix) n = len(matrix[0]) for i in range(1, m): for j in range(1, n): if matrix[i][j] != matrix[i - 1][j - 1]: return False return True |
请尊重作者的劳动成果,转载请注明出处!花花保留对文章/视频的所有权利。
如果您喜欢这篇文章/视频,欢迎您捐赠花花。
If you like my articles / videos, donations are welcome.
Be First to Comment