You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现从矩阵右下角开始逆时针螺旋遍历的Python函数?

实现从右下角开始逆时针螺旋遍历矩阵的Python函数spiralOrder

需求说明

实现函数spiralOrder(matrix: list[list[int]]) -> list[int],要求从矩阵的右下角元素开始,以逆时针螺旋的顺序返回所有元素。以下是具体示例:

  • 输入矩阵 [[1,2,3],[4,5,6],[7,8,9]],输出 [9,6,3,2,1,4,7,8,5]
  • 输入矩阵 [[1,2],[3,4],[5,6]],输出 [6,4,2,1,3,5]
  • 输入一维矩阵 [3],输出 [3]

解法思路

通过维护矩阵的四个边界(上、下、左、右),模拟逆时针螺旋的遍历路径:

  1. 初始从右下角出发,先沿右列向上遍历,完成后收缩右边界
  2. 接着沿上行向左遍历,完成后收缩上边界
  3. 然后沿左列向下遍历,完成后收缩左边界
  4. 最后沿下行向右遍历,完成后收缩下边界
    重复上述步骤直到所有元素被收集,同时处理空矩阵、一维数组、单行/单列等特殊情况。

代码实现

def spiralOrder(matrix: list[list[int]]) -> list[int]:
    # 处理空矩阵或一维数组的特殊情况
    if not matrix:
        return []
    if isinstance(matrix[0], int):
        return matrix
    
    result = []
    # 初始化四个边界
    top = 0
    bottom = len(matrix) - 1
    left = 0
    right = len(matrix[0]) - 1
    
    while top <= bottom and left <= right:
        # 1. 沿右列向上遍历(从底部到顶部)
        for i in range(bottom, top - 1, -1):
            result.append(matrix[i][right])
        right -= 1
        if top > bottom or left > right:
            break
        
        # 2. 沿上行向左遍历(从右到左)
        for i in range(right, left - 1, -1):
            result.append(matrix[top][i])
        top += 1
        if top > bottom or left > right:
            break
        
        # 3. 沿左列向下遍历(从顶部到底部)
        for i in range(top, bottom + 1):
            result.append(matrix[i][left])
        left += 1
        if top > bottom or left > right:
            break
        
        # 4. 沿下行向右遍历(从左到右)
        for i in range(left, right + 1):
            result.append(matrix[bottom][i])
        bottom -= 1
    
    return result

测试验证

运行以下代码可验证结果符合预期:

# 测试示例1
print(spiralOrder([[1,2,3],[4,5,6],[7,8,9]]))  # 输出: [9,6,3,2,1,4,7,8,5]
# 测试示例2
print(spiralOrder([[1,2],[3,4],[5,6]]))        # 输出: [6,4,2,1,3,5]
# 测试示例3
print(spiralOrder([3]))                        # 输出: [3]

内容的提问来源于stack exchange,提问作者Hector Damian Reyes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 08:10:29