顺(逆)时针打印矩阵

本文介绍了如何顺时针和逆时针打印矩阵,详细解析了顺时针打印的解决方案,以及扩展讨论了逆时针打印的步骤。通过矩阵的旋转和提取操作,展示了Python在处理这类问题的灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

顺时针打印矩阵

剑指 Offer 29. 顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

示例 1:

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
解决方法

先把最前面的元素提取了。然后将剩下元素逆时针旋转 90 度,再依次循环进行。

逆时针:竖排提取 → 元素翻转 。

def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
    res = []
    while matrix
### PTA平台逆时针顺序打印矩阵算法实现 为了实现在PTA平台上按照逆时针方向打印矩阵的功能,可以采用一种模拟方法。这种方法通过逐步缩小边界来遍历整个矩阵。 #### 方法概述 定义四个变量分别记录当前层的上、下、左、右边界。每次访问一层后更新这些边界的值,直到所有的元素都被访问完毕为止。具体来说: - 初始化上下左右四条边界的坐标。 - 当前层从最外圈开始向内逐层推进。 - 对于每一条边上的元素依次读取并输出。 - 更新相应的边界条件以进入更内部的一圈继续上述过程直至结束。 以下是Python语言的一个简单例子[^1]: ```python def spiralOrder(matrix): result = [] if not matrix or not matrix[0]: return result top, bottom, left, right = 0, len(matrix)-1, 0, len(matrix[0])-1 while True: # 左到右 for i in range(left, right + 1): result.append(matrix[top][i]) top += 1 if top > bottom: break # 上到下 for i in range(top, bottom + 1): result.append(matrix[i][right]) right -= 1 if left > right: break # 右到左 for i in reversed(range(left, right + 1)): result.append(matrix[bottom][i]) bottom -= 1 if top > bottom: break # 下到上 for i in reversed(range(top, bottom + 1)): result.append(matrix[i][left]) left += 1 if left > right: break return list(reversed(result)) ``` 此函数接收二维列表`matrix`作为输入参数,并返回一个新的列表,其中包含了原数组中所有数值按逆时针顺序排列的结果。注意这里最后一步是对最终得到的结果进行了反转操作以便满足题目对于“逆时针”的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值