[Leetcode][python]Spiral Matrix/Spiral Matrix II/螺旋矩阵/螺旋矩阵 II

旧城等待, 2022-06-07 03:55 317阅读 0赞

Spiral Matrix

题目大意

将一个矩阵中的内容螺旋输出。
注意点:

矩阵不一定是正方形
例子:

输入: matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]
输出: [1, 2, 3, 6, 9, 8, 7, 4, 5]

解题思路

看代码就可以理解
注意:

while True:
然后里面自行判断结束

代码

  1. class Solution(object):
  2. def spiralOrder(self, matrix):
  3. """
  4. :type matrix: List[List[int]]
  5. :rtype: List[int]
  6. """
  7. if not matrix:
  8. return []
  9. up = 0
  10. left = 0
  11. down = len(matrix)-1
  12. right = len(matrix[0])-1
  13. direct = 0 # 0: go right 1: go down 2: go left 3: go up
  14. res = []
  15. while True:
  16. if direct == 0:
  17. for i in range(left, right+1):
  18. res.append(matrix[up][i])
  19. up += 1
  20. if direct == 1:
  21. for i in range(up, down+1):
  22. res.append(matrix[i][right])
  23. right -= 1
  24. if direct == 2:
  25. for i in range(right, left-1, -1):
  26. res.append(matrix[down][i])
  27. down -= 1
  28. if direct == 3:
  29. for i in range(down, up-1, -1):
  30. res.append(matrix[i][left])
  31. left += 1
  32. if up > down or left > right:
  33. return res
  34. direct = (direct+1) % 4

Spiral Matrix II

题目大意

将一个正方形矩阵螺旋着填满递增的数字。

解题思路

螺旋填满数字

代码

  1. class Solution(object):
  2. def generateMatrix(self, n):
  3. """
  4. :type n: int
  5. :rtype: List[List[int]]
  6. """
  7. if n == 0:
  8. return []
  9. matrix = [[0 for i in range(n)] for j in range(n)] # 创建矩阵
  10. up = 0
  11. down = len(matrix)-1
  12. left = 0
  13. right = len(matrix[0])-1
  14. direct = 0
  15. count = 0
  16. while True:
  17. if direct == 0:
  18. for i in range(left, right+1):
  19. count += 1; matrix[up][i] = count
  20. up += 1
  21. if direct == 1:
  22. for i in range(up, down+1):
  23. count += 1; matrix[i][right] = count
  24. right -= 1
  25. if direct == 2:
  26. for i in range(right, left-1, -1):
  27. count += 1; matrix[down][i] = count
  28. down -= 1
  29. if direct == 3:
  30. for i in range(down, up-1, -1):
  31. count += 1; matrix[i][left] = count
  32. left += 1
  33. if count == n*n:
  34. return matrix
  35. direct = (direct+1) % 4

总结

发表评论

表情:
评论列表 (有 0 条评论,317人围观)

还没有评论,来说两句吧...

相关阅读

    相关 59. 螺旋矩阵 II

    给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。 示例: 输入: 3 输出: [ [ 1

    相关 59. 螺旋矩阵 II

    这道题,在剑指offer的面试题29,顺时针打印矩阵是同一个思路。 给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。 示例