Leetcode 59.螺旋矩阵II
今天的题和昨天的一样,哈哈哈哈哈
参考大佬主页
如果这个不明白关注这个大佬,非常值得学习
思路
那今天就写一下大佬的的思路:
1、要考虑初始位置 (0,0)
2、移动的方向:上下左右,不过按照矩阵昨天画的图,从左上(0,0)往右移,
3、边界问题,是方阵,m = n; 如果是右边界,则right-1;下边界,down-1;左边界,left+1;上边界,up+1;
注:数字0标记边界;0可以代表我们已经遍历过了
4、结束,所有元素都被遍历一遍了
class Solution(Object):
def generateMatrix(self,n):
if n = 0:
return []
res = [[0]*n for i in range(n)]
left,right,up,down = 0,n-1,0,n-1
x,y = 0,0
dirs = [(0,1),(1,0),(0,-1),(-1,0)]
cur_d = 0
count = 0
while count ! = n*n:
res[x][y] = count + 1
count +=1
if cur_d == 0 and y == right:
cur_d +=1
up +=1
elif cur_d ==2 and y == left:
cur_d +=1
down -=1
elif cur_d == 3 and x == up:
cur_d +=1
left +=1
cur_d %= 4
x += dirs[cur_d][0]
y += dirs[cur_d][1]
return res