剑指offer29:顺时针打印矩阵

def printMatrix(atr,rows,cols):
    start=0
    while cols>start*2 and rows >start*2:
        printMatrixCircle(atr,cols,rows,start)
        start+=1
def printMatrixCircle(atr,cols,rows,start):
    endx=cols-1-start
    endy=cols-1-start
    #从左到右
    for i in range(start,endx+1):
        number=atr[start][i]
        print(number)
    #从上到下
    if start<endy:
        for i in range(start+1,endy):
            number=atr[i][endy]
            print(number)
    #从右到左
    if start<endy and start<endx:
        for i in range(endx-1,start-1,-1):
            number= atr[endy][i]
            print(number)
    #从下到上
    if start<endy-1 and start<endx:
        for i in range(endx-1,0,-1):
            number=atr[i][start]
            print(number)                   
arr=[i for i in range(1,17)]
import numpy as np
ar=np.array(arr).reshape(4,4)
printMatrix(ar,4,4)
class Solution:
    # matrix类型为二维列表,需要返回列表
    def printMatrix(self, matrix):
        # write code here
        row = len(matrix)
        col = len(matrix[0]) if row!=0 else 0
        r1 = 0
        r2 = row-1
        c1 = 0
        c2 = col-1
        res = []
        while r1<=r2 and c1<=c2:
            for i in range(c1,c2+1):
                res.append(matrix[r1][i])
            for j in range(r1+1,r2+1):
                res.append(matrix[j][c2])
            if r1!=r2:
                for i in range(c2-1,c1-1,-1):
                    res.append(matrix[r2][i])
            if c1!=c2:
                for i in range(r2-1,r1,-1):
                    res.append(matrix[i][c1])
            r1+=1
            r2-=1
            c1+=1
            c2-=1
        return res
————————————————
版权声明:本文为CSDN博主「ys1305」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ys1305/article/details/96180255
发布了86 篇原创文章 · 获赞 1 · 访问量 8226

猜你喜欢

转载自blog.csdn.net/a1272899331/article/details/104523563