Leetcode 54.螺旋矩阵

Leetcode 54.螺旋矩阵

学习:大佬主页
在这里插入图片描述
这是另一篇参考递归参考

clss Solution(object):
	def spirlOrder(self,matrix):
		#计算出矩阵的行列数
		m = len(matrix)
		n = len(matrix[0])
		#记录已经访问过的位置
		visited = [0 for i in range(n) for j in range(m)]
		#更换方向
		change_direction = {1:2,2:3,3:4,4:1}
		#步长
		step = {1:[0,1],2:[1,0],3:[0,-1],4:[-1,0]}
		#初始方向
		initdirec = 1
		#当前方向
		cur_direc = 1
		#初始坐标	
		pos = [0,0]
		#初始输出数组
		res = [matrix[0][0]]
		#初始访问矩阵
		visited[0][0] = 1
		#初始遍历次数
		count = 1
		
		while count<m*n:
			x,y = step[cur_direc]
			i,j = pos
			if 0<=i+x<m and 0<=j+y<n and visited[i+x][y+j] == 0:
				visited[i+x][j+y] = 1
				pos = [i+x][j+y]
				res.append(matrix[i+x][j+y])
				count +=1
			else:
				cur_direc = change_direc[cur_direc]
		return res
						
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值