给你一个 m x n 的矩阵 matrix 。如果这个矩阵是托普利茨矩阵,返回 true ;否则,返回 false 。如果矩阵上每一条由左上到右下的对角线上的元素都相同,那么这个矩阵是 托普利茨矩阵
例子
输入:matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]]
输出:true

解释:
在上述矩阵中, 其对角线为:
"[9]", "[5, 5]", "[1, 1, 1]", "[2, 2, 2]", "[3, 3]", "[4]"。
各条对角线上的所有元素均相同, 因此答案是 True 。
输入:matrix = [[1,2],[2,2]]
输出:false
解释:
对角线 "[1, 2]" 上的元素不同。
解题思路
按照题意我们可以理解成
matrix[i][j] 与 matrix[i+1][j+1] 是否相等的问题
(i为行, j为列)
双循环暴力法求解
代码
未翻译版
func isToeplitzMatrix(_ matrix: [[Int]]) -> Bool {
for i in 0..<matrix.count - 1 {
for j in 0..<matrix[i].count - 1 {
if matrix[i+1][j+1] != matrix[i][j] {
return false;
}
}
}
return true;
}
翻译版
func isToeplitzMatrix(_ matrix: [[Int]]) -> Bool {
// 循环行
for i in 0..<matrix.count - 1 {
// 循环对应行中每一个元素
for j in 0..<matrix[i].count - 1 {
// 判断是否与对角线元素相等
if matrix[i+1][j+1] != matrix[i][j] {
// 不相等返回false
return false;
}
}
}
// 其他情况返回true
return true;
}
题目来源:力扣(LeetCode) 感谢力扣爸爸 :)
IOS 算法合集地址
网友评论