美文网首页
20、顺时针从外到内打印矩阵

20、顺时针从外到内打印矩阵

作者: 小碧小琳 | 来源:发表于2018-09-28 22:33 被阅读0次

    用一个循环打印矩阵,每次打印矩阵中的一个圈

    选取左上角(start,start)的一圈作为分析的目标,每次循环start+1,对新的一圈输出

    循环结束的条件就是,列数大于startX 乘以2,行数大于 startY 乘以 2

    def PrintMatrix(grid):
    if len(grid) == 0:
    return

    columns = len(grid)
    rows = len(grid[0])
    start = 0
    
    while  columns > start * 2 and rows > start * 2:
        PrintMatrixHelper(grid,columns,rows,start)
        start += 1
    

    接下来,我们把打印一圈分为四步,从左到右打印一行,从上到下打印一列,从右到左打印一行,

    从下到上打印一列

    又因为最后一圈可能会退化,因此要注意最后一圈的可能的不同的情况

    因此需要仔细分析每一步的前提条件

    获取终止行数,终止列数

    def PrintMatrixHelper(grid,columns,rows,start):
    endX = columns - 1 - start
    endY = rows - 1 - start

    #从左到右打印第一行
    for i in range(start,endX+1):
        print(grid[start][i])
    
    #从上到下打印一列
    if start < endY:
        for i in range(start+1,endY+1):
            print(grid[i][endX])
    
    #从右到左打印一行
    if start < endX and start < endY:
        for i in range(endX - 1,start-1,-1):
            print(grid[endY][i])
    
    #从下到上打印一列
    if start < endX and start < endY - 1:
        for i in range(endY - 1,start,-1):
            print(grid[i][start])
    

    grid = [[1,2,3],[4,5,6],[7,8,9]]
    PrintMatrix(grid)

    相关文章

      网友评论

          本文标题:20、顺时针从外到内打印矩阵

          本文链接:https://www.haomeiwen.com/subject/grpmoftx.html