class Solution:
def spiralOrder(self, matrix: list[list[int]]) -> list[int]:
m = len(matrix) #行数
n = len(matrix[0]) #列数
number=m*n #总个数,不能是[0]*m*n这样有二维嫌疑
nums=[0]*number
startm=0 #行下标
startn=0 #列下标
offset=1 #抵消值
count = 0 #数组下标
i = 0
j=0
if number==0:
return []
while count<m*n:
if (n-offset)>startn: #先判断,是不是单独一列
for j in range(startn,n-offset):
nums[count] = matrix[i][j]
count += 1
j += 1
else:
nums[count]=matrix[startm][startn]
if (m-offset)==startm: #再判断是不是一行一列数据,就是只有1
break
if (m-offset)>startm:
for i in range(startm,m-offset):
nums[count] = matrix[i][j]
count += 1
i += 1
else:
nums[count]=matrix[startm][j]
break
if (n-offset)>startn:
for j in range(n-offset,startn,-1):
nums[count] = matrix[i][j]
count += 1
j -=1
else:
nums[count]= matrix[i][j]
break
if (m-offset)>startm:
for i in range(m-offset,startm,-1):
nums[count] = matrix[i][j]
count += 1
else:
nums[count]= matrix[i][j]
break
startm +=1
startn +=1
offset +=1
j+=1 #i j 都要更新 ,但因为i省略了更新 所以i不做操作
return nums
matrix = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
solution = Solution()
result = solution.spiralOrder(matrix)
print(result)
力扣54 螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素
最新推荐文章于 2024-10-18 00:00:00 发布