又是新的一周,加油板砖,加油刷题。
class Solution:
def isToeplitzMatrix(self, matrix: List[List[int]]) -> bool:
if not matrix:
return True
if len(matrix)==1:
return True
#将行和列的元素都拿到
row = matrix[0]
col = [matrix[i][0] for i in range(len(matrix))]
row_size, col_size = len(matrix),len(matrix[0])
for i in range(len(row)):
tmp = row[i]
x,y =0,i
while x<row_size and y<col_size:
if tmp == matrix[x][y]:
x+=1
y+=1
else:
return False
for i in range(1,len(col)):
tmp = col[i]
x,y = i,0
while x<row_size and y<col_size:
if tmp == matrix[x][y]:
x+=1
y+=1
else:
return False
return True
row = len(matrix)
col = len(matrix[0])
for i in range(row):
for j in range(col):
if i>0 and j>0 and matrix[i][j]!=matrix[i-1][j-1]:
return False
return True
所谓托普利茨矩阵就是对角线上所有的元素全部相等。
class Solution:
def isToeplitzMatrix(self, matrix: List[List[int]]) -> bool:
for i in range(len(matrix) - 1):
print(matrix[i][:-1],matrix[i + 1][1:])
if matrix[i][:-1] != matrix[i + 1][1:]:
return False
return True
不能将一行或者只能加载不完全的的一行,那就用切片方法去做。因为所谓对角线元素全部相等就意味着上一行和下一行就相差一个元素,通过这样的方法就可以判断对角线的元素是不是相等。
总结:切片方法比上述方法更加的高明,代码也更加的简洁,是非常好的一个解决问题的思路。