classSolution:defsetZeroes(self, matrix: List[List[int]])->None:"""Do not return anything, modify matrix in-place instead."""row_set =set()col_set =set()# 标记所有需要置零的行和列for i inrange(len(matrix)):for j inrange(len(matrix[0])):if matrix[i][j]==0:row_set.add(i)col_set.add(j)# 将标记的行和列置零for row in row_set:for j inrange(len(matrix[0])):matrix[row][j]=0for col in col_set:for i inrange(len(matrix)):matrix[i][col]=0
classSolution:defspiralOrder(self, matrix: List[List[int]])-> List[int]:ifnot matrix:return[]l, r, t, b, res =0,len(matrix[0])-1,0,len(matrix)-1,[]whileTrue:for i inrange(l, r +1): res.append(matrix[t][i])# left to rightt +=1if t > b:breakfor i inrange(t, b +1): res.append(matrix[i][r])# top to bottomr -=1if l > r:breakfor i inrange(r, l -1,-1): res.append(matrix[b][i])# right to leftb -=1if t > b:breakfor i inrange(b, t -1,-1): res.append(matrix[i][l])# bottom to topl +=1if l > r:breakreturn res
三、48. 旋转图像
思路: 先将上下三角两两交换,再行交换
代码:
# 思路:先进行对角线交换,在每一行交换就完成转换90度classSolution:defrotate(self, matrix: List[List[int]])->None:n =len(matrix)for j inrange(n):for i inrange(j):matrix[i][j], matrix[j][i]= matrix[j][i], matrix[i][j]for i inrange(n):matrix[i].reverse()# 也可以写为# for i in range(n):# matrix[i] = matrix[i][::-1]