给定一个二维数组 array,请返回「螺旋遍历」该数组的结果。
螺旋遍历:从左上角开始,按照 向右、向下、向左、向上 的顺序 依次 提取元素,然后再进入内部一层重复相同的步骤,直到提取完所有元素。
示例 1:
输入:array = [[1,2,3],[8,9,4],[7,6,5]]
输出:[1,2,3,4,5,6,7,8,9]
示例 2:
输入:array = [[1,2,3,4],[12,13,14,5],[11,16,15,6],[10,9,8,7]]
输出:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
限制:
0 <= array.length <= 100
0 <= array[i].length <= 100
思路:容易想,但是要注意边界问题,还有下标的范围容易出错
class Solution(object):def spiralArray(self, array):""":type array: List[List[int]]:rtype: List[int]"""if not array: return []l,r,u,d,t=0,len(array[0])-1,0,len(array)-1,[]while True:#从左到右for i in range(l,r+1):t.append(array[u][i])u+=1if u>d: break#从上到下for j in range(u,d+1):t.append(array[j][r])r-=1if l>r: break#从右到左for i in range(r,l-1,-1):t.append(array[d][i])d-=1if u>d: break#从下到上for j in range(d,u-1,-1):t.append(array[j][l])l+=1if l>r: breakreturn t