题解 | 螺旋矩阵

螺旋矩阵

https://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param matrix int整型二维数组 
# @return int整型一维数组
#
class Solution:
    def spiralOrder(self , matrix: List[List[int]]) -> List[int]:
        # write code here
        n = len(matrix)
        if n<1:
            return []
        m = len(matrix[0])
        if m<1:
            return []
        direction = [[0,1],[1,0],[0,-1],[-1,0]]
        idx = 0
        res = []
        i,j = 0,0
        total_num = 0
        while (total_num<n*m):
            res.append(matrix[i][j])
            matrix[i][j] = 101 #纪录走过的位置
            total_num +=1
            i = i+direction[idx][0]
            j = j+direction[idx][1]
            if i<0 or i>=n or j<0 or j>=m or matrix[i][j]==101:#满足换方向条件
                i = i-direction[idx][0]
                j = j-direction[idx][1]
                idx=(idx+1)%4
                i = i+direction[idx][0]
                j = j+direction[idx][1]

        return res

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务