本文主要是介绍[LeetCode] 54. Spiral Matrix,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目内容
https://leetcode-cn.com/problems/spiral-matrix/comments/
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
示例 1:输入:
[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]
]
输出: [1,2,3,6,9,8,7,4,5]
示例 2:输入:
[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]
]
输出: [1,2,3,4,8,12,11,10,9,5,6,7]
题目思路
这道题目的思路应该有挺多的,我看别人还有不断翻转矩阵然后输出的,涂0输出的等等。 我就比较常规,使用套圈法一层一层输出,然后缩小,最后到空矩阵为止。值得注意的是,一定要设置好停止套圈的条件。那就是整个矩阵的规模至少是3*3的,再小就不会内收了。
程序代码
class Solution(object):def spiralOrder(self, matrix):""":type matrix: List[List[int]]:rtype: List[int]"""if not matrix:returnwid,lgt=len(matrix),len(matrix[0])if wid==1:return matrix[0]if lgt==1:res=[]for i in range(wid):res+=matrix[i]return resres=[]for i in range(lgt):res.append(matrix[0][i])for i in range(1,wid):res.append(matrix[i][lgt-1])for i in range(lgt-2,-1,-1):res.append(matrix[wid-1][i])for i in range(wid-2,0,-1):res.append(matrix[i][0])if wid>2 and lgt>2: next=matrix[1:wid-1]lgt_next=len(next[0])for i in range(len(next)):next[i]=next[i][1:lgt_next-1]tmp=self.spiralOrder(next)res=res+tmp return res
这篇关于[LeetCode] 54. Spiral Matrix的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!