题目描述
给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。
示例1
输入
[[1,2,3],[4,5,6],[7,8,9]]
返回值
[1,2,3,6,9,8,7,4,5]
# 试图使用旋转矩阵进行迭代的思路进行,旋转想用通用点的函数实现没有list(zip(*matrix[1:]))[::-1]使用python语法糖简单,写成下面这样:
```python
#
#
# @param matrix int整型二维数组
# @return int整型一维数组
#
class Solution:
def spiralOrder(self, matrix):
# write code here
# 利用python中的zip函数
# res = []
# while matrix:
# res += matrix[0]
# matrix = list(zip(*matrix[1:]))[::-1]
# return res
rn = len(matrix)
if rn == 0:
res = []
elif isinstance(matrix[0], int):
res = matrix
else:
res = []
while matrix:
res.extend(matrix[0])
matrix = self.rotate_matrix(matrix[1:])
print(res)
# print("res:", res)
return res
def rotate_matrix(self, matrix):
"""
矩阵旋转通用函数
:param matrix:
:return:
"""
rn = len(matrix)
if rn == 0:
return matrix
if isinstance(matrix[0], int):
return matrix
cn = len(matrix[0])
print(rn, cn)
r_matrix = [[0]*rn for i in range(cn)] #初始化逆时针旋转矩阵的大小
for r in range(rn):
for c in range(cn):
# 逆时针旋转90度
r_matrix[cn-c-1][r] = matrix[r][c]
# 45度对角线翻转
# r_matrix[cn-c-1][rn-r-1] = matrix[r][c]
# 顺时针旋转90度
# r_matrix[c][rn-r-1] = matrix[r][c]
# print(r_matrix)
return r_matrix
运行时间:20ms
超过40.30%用Python 3提交的代码
占用内存:3016KB
超过92.31%用Python 3提交的代码