面试题29. 顺时针打印矩阵
Easy
思路
- 按着题目理解的方式进行遍历
- 一圈分成4个步骤,代码使用
%4来区分步骤 - 一圈结束后,要向内圈缩进一格
- 遍历次数为m * n
代码
python3
class Solution:def spiralOrder(self, matrix: List[List[int]]) -> List[int]:if len(matrix) == 0:return []r = []m = len(matrix)n = len(matrix[0])count = 0i = 0j = 0for k in range(m * n):#print((i,j))r.append(matrix[i][j])if count % 4 == 0:if j < (n - 1 - int(count / 4)):j +=1else:i+=1count += 1elif count % 4 == 1:if i < (m - 1 - int(count / 4)):i +=1else:j-=1count +=1elif count % 4 == 2:if j > int(count / 4):j-=1else:i-=1count +=1else:if i> int(count/4) + 1:i-=1else:j+=1count +=1return r
