★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址: http://www.javashuo.com/article/p-esvvfrut-me.html
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same element.git
Now given an M x N
matrix, return True
if and only if the matrix is Toeplitz. github
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:spa
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]
.若是一個矩陣的每一方向由左上到右下的對角線上具備相同元素,那麼這個矩陣是託普利茨矩陣。code
給定一個 M x N
的矩陣,當且僅當它是託普利茨矩陣時返回 True
。htm
示例 1:blog
輸入: 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。
示例 2:內存
輸入: matrix = [ [1,2], [2,2] ] 輸出: False 解釋: 對角線"[1, 2]"上的元素不一樣。
說明:
matrix
是一個包含整數的二維數組。matrix
的行數和列數均在 [1, 20]
範圍內。matrix[i][j]
包含的整數在 [0, 99]
範圍內。進階:
1 class Solution { 2 func isToeplitzMatrix(_ matrix: [[Int]]) -> Bool { 3 for i in 0..<matrix.count - 1 4 { 5 for j in 0..<matrix[i].count - 1 6 { 7 if matrix[i][j] != matrix[i + 1][j + 1] 8 { 9 return false 10 } 11 } 12 } 13 return true 14 } 15 }
28ms
1 class Solution { 2 func isToeplitzMatrix(_ matrix: [[Int]]) -> Bool { 3 var temp: [Int] = matrix[0] 4 for i in 1..<matrix.count { 5 let smallMatrix = matrix[i] 6 for j in 0..<smallMatrix.count { 7 if j == 0 { 8 temp.insert(smallMatrix[j], at: 0) 9 } else { 10 if smallMatrix[j] != temp[j] { 11 return false 12 } 13 } 14 } 15 } 16 return true 17 } 18 }
32ms
1 class Solution { 2 func isToeplitzMatrix(_ matrix: [[Int]]) -> Bool { 3 var result = true 4 5 for i in 0..<matrix.count { 6 for j in 0..<matrix[0].count { 7 if i > 0 && j > 0 { 8 break; 9 } 10 var pointR = i + 1 11 var pointC = j + 1 12 13 let val1 = matrix[i][j]; 14 let count = matrix[0].count 15 16 while pointR < matrix.count { 17 if pointC < count { 18 let val2 = matrix[pointR][pointC] 19 if val1 != val2 { 20 result = false; 21 } 22 pointR += 1; 23 pointC += 1; 24 } else { 25 break; 26 } 27 } 28 } 29 } 30 return result; 31 } 32 }
68ms
1 class Solution { 2 func isToeplitzMatrix(_ matrix: [[Int]]) -> Bool { 3 for i in 0..<matrix[0].count{ 4 var val = -1 5 var rowIndex = 0 6 var columnIndex = i 7 8 while rowIndex < matrix.count && columnIndex < matrix[0].count{ 9 if val != -1 && val != matrix[rowIndex][columnIndex]{ 10 return false 11 } 12 val = matrix[rowIndex][columnIndex] 13 rowIndex += 1 14 columnIndex += 1 15 } 16 } 17 18 for i in 0..<matrix.count{ 19 var val = -1 20 21 var rowIndex = i 22 var columnIndex = 0 23 24 while rowIndex < matrix.count && columnIndex < matrix[0].count{ 25 if val != -1 && val != matrix[rowIndex][columnIndex]{ 26 return false 27 } 28 val = matrix[rowIndex][columnIndex] 29 rowIndex += 1 30 columnIndex += 1 31 } 32 } 33 return true 34 } 35 }
88ms
1 class Solution { 2 func isToeplitzMatrix(_ matrix: [[Int]]) -> Bool { 3 guard matrix.count > 0 else { 4 return false 5 } 6 if matrix.count == 1 { 7 return true 8 } 9 10 var row = matrix[0] 11 for i in 1..<matrix.count { 12 row = matrix[i-1] 13 if !matrix[i][1...].elementsEqual(row[0..<row.count - 1]) { 14 return false 15 } 16 } 17 return true 18 } 19 }