剑指offer顺时针打印矩阵python
题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
思路
分别给行和列设置两个数字作为边界值,每一次循环之后,缩小边界。
代码
# -*- coding:utf-8 -*-
class Solution:
# matrix类型为二维列表,需要返回列表
def printMatrix(self, matrix):
if not matrix:
return
x0,y0 = 0,0
xn = len(matrix) - 1
yn = len(matrix[0]) - 1
ans = []
while x0 <=xn and y0 <=yn:
for i in range(y0,yn+1):
ans.append(matrix[x0][i])
for i in range(x0+1,xn+1):
ans.append(matrix[i][yn])
if xn > x0: #不是单一行
for i in range(yn-1,y0-1, -1):
ans.append(matrix[xn][i])
if yn > y0:
for i in range(xn-1,x0, -1):
ans.append(matrix[i][y0])
x0 += 1
y0 += 1
xn -= 1
yn -= 1
return ans相关推荐
elizabethxxy 2020-11-06
pythonxuexi 2020-10-30
retacnyue 2020-09-28
pythonxuexi 2020-09-06
Morelia 2020-09-04
zhaobig 2020-08-17
linkequa 2020-08-16
CloudXli 2020-08-14
kikaylee 2020-08-12
LowisLucifer 2020-08-09
xiesheng 2020-08-06
Tristahong 2020-08-05
CatherineC00 2020-08-01
Andrewjdw 2020-07-26
reallyr 2020-07-18
wordmhg 2020-07-16
yawei 2020-07-06
zlfing 2020-07-07