当前位置:实例文章 » 其他实例» [文章](数组与矩阵) 剑指 Offer 29. 顺时针打印矩阵 ——【Leetcode每日一题】

(数组与矩阵) 剑指 Offer 29. 顺时针打印矩阵 ——【Leetcode每日一题】

发布人:shili8 发布时间:2025-01-19 20:15 阅读次数:0

**剑指 Offer29. 顺时针打印矩阵**

**问题描述**

给定一个矩阵,要求从左上角开始顺时针打印出该矩阵的所有元素。

**示例**

输入:

[
 [1,2,3],
 [4,5,6],
 [7,8,9]
]


输出:
[1,2,3,6,9,8,7,4,5]


**解决方案**

我们可以使用一个辅助函数来实现这个功能。该函数将从左上角开始顺时针打印矩阵的所有元素。

def printMatrix(matrix):
 if not matrix:
 return rows = len(matrix)
 cols = len(matrix[0])
 top, bottom =0, rows -1 left, right =0, cols -1 while top <= bottom and left <= right:
 # 从左到右打印第一行 for i in range(left, right +1):
 print(matrix[top][i], end=" ")
 top +=1 # 从上到下打印最后一列 for i in range(top, bottom +1):
 print(matrix[i][right], end=" ")
 right -=1 if top <= bottom:
 # 从右到左打印最后一行 for i in range(right, left -1, -1):
 print(matrix[bottom][i], end=" ")
 bottom -=1 # 从下到上打印第一列 for i in range(bottom, top -1, -1):
 print(matrix[i][left], end=" ")
 left +=1 return# 测试用例matrix = [
 [1,2,3],
 [4,5,6],
 [7,8,9]
]

printMatrix(matrix)


**输出**

[1,2,3,6,9,8,7,4,5]


**解释**

该函数首先检查输入矩阵是否为空。如果不为空,则计算矩阵的行数和列数。然后,使用四个变量(top、bottom、left 和 right)来表示矩阵的左上角和右下角。

接下来,使用一个while循环来实现从左到右打印第一行,从上到下打印最后一列,从右到左打印最后一行,从下到上打印第一列的功能。每次循环结束后,都会更新top、bottom、left 和 right的值。

**注意**

该函数假设输入矩阵是正方形的。如果矩阵不是正方形,则需要进行额外的处理来实现从左上角开始顺时针打印所有元素。

其他信息

其他资源

Top