本文讲述了python基础编程100例:第95期-基础结构:矩阵 螺旋矩阵!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:
第95期-基础结构:矩阵 螺旋矩阵
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
1 问题描述
输入: matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出: [1,2,3,6,9,8,7,4,5]
示例 2:
输入: matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出: [1,2,3,4,8,12,11,10,9,5,6,7]
初始代码
from typing import List
class Solution:
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
#在此之间填写代码
print(Solution().spiralOrder([[1,2,3],[4,5,6],[7,8,9]]))
print(Solution().spiralOrder([[1,2,3,4],[5,6,7,8],[9,10,11,12]]))
3.解题方法
from typing import List
class Solution:
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
m=len(matrix)
n=len(matrix[0])
i,j=0,0
a,p=[matrix[i][j]],0
matrix[i][j]=''
while p<=4:
while j+1<n and matrix[i][j+1]!='':
j+=1
a.append(matrix[i][j])
matrix[i][j]=''
p=0
p+=1
while i+1<m and matrix[i+1][j]!='':
i+=1
a.append(matrix[i][j])
matrix[i][j]=''
p=0
p+=1
while j-1>=0 and matrix[i][j-1]!='':
j-=1
a.append(matrix[i][j])
matrix[i][j]=''
p=0
p+=1
while i-1>=0 and matrix[i-1][j]!='':
i-=1
a.append(matrix[i][j])
matrix[i][j]=''
p=0
p+=1
return a
print(Solution().spiralOrder([[1,2,3],[4,5,6],[7,8,9]]))
print(Solution().spiralOrder([[1,2,3,4],[5,6,7,8],[9,10,11,12]]))
第1-3,37-38行: 题目中已经给出的信息,运行代码时要根据这些代码进行编辑
第4-8行: 定义变量m、n、i、j、p并分别赋值矩阵宽度,长度,0,0,0,i,j是索引,p是结束条件,列表a存放矩阵第一个元素
第9行: 当p小于四的时候执行循环
第10-15行: 从刚刚结束位置向右走直到遇到矩阵边界或者之前索引过的值,将这些值都存入列表a中,若执行了这些操作,令p=0后加1
第16-21行: 从刚刚结束位置向下走直到遇到矩阵边界或者之前索引过的值,将这些值都存入列表a中,若执行了这些操作,令p=0后加1
第22-27行: 从刚刚结束位置向左走直到遇到矩阵边界或者之前索引过的值,将这些值都存入列表a中,若执行了这些操作,令p=0后加1
第28-33行: 从刚刚结束位置向上走直到遇到矩阵边界或者之前索引过的值,将这些值都存入列表a中,若执行了这些操作,令p=0后加1
第34行: 只要经过一次转弯,p就不可能等于4,若p等于4,则便利到最后一点,结束循环并返回列表a
代码运行结果为:
更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。
想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!