赞
踩
给你一个 m
行 n
列的矩阵 matrix
,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
设置上下左右边界,循环进行右下左上的遍历操作,同时每经历一次右下左上则更新一次边界范围。当有下边界>上边界或者右边界<左边界的时候则为全部遍历完成。
- def spiralOrder(self, matrix):
- res = []
- if not matrix:
- return res
- left,right = 0 , len(matrix[0])-1
- up,behind = 0 , len(matrix)-1
- while True:
- # 右
- for i in range(left,right+1):
- res.append(matrix[up][i])
- up += 1
- if up > behind:
- break
- # 下
- for i in range(up,behind+1):
- res.append(matrix[i][right])
- right -= 1
- if right < left:
- break
- # 左
- for i in range(right,left-1,-1):
- res.append(matrix[behind][i])
- behind -= 1
- if behind < up:
- break
- # 右
- for i in range(behind,up-1,-1):
- res.append(matrix[i][left])
- left += 1
- if left > right:
- break
- return res
'运行
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。