首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

二维数组(矩阵)层旋转代码。尝试优化代码以进行矩阵层旋转

二维数组(矩阵)层旋转是指将一个二维数组按照层级进行旋转操作,即将数组中的每一层元素按照顺时针或逆时针方向旋转。下面是一个优化后的矩阵层旋转代码示例:

代码语言:txt
复制
def rotate_matrix(matrix):
    if not matrix or not matrix[0]:
        return matrix

    rows, cols = len(matrix), len(matrix[0])
    start_row, start_col = 0, 0
    end_row, end_col = rows - 1, cols - 1

    while start_row < end_row and start_col < end_col:
        prev = matrix[start_row + 1][start_col]

        # 上边
        for i in range(start_col, end_col + 1):
            curr = matrix[start_row][i]
            matrix[start_row][i] = prev
            prev = curr

        start_row += 1

        # 右边
        for i in range(start_row, end_row + 1):
            curr = matrix[i][end_col]
            matrix[i][end_col] = prev
            prev = curr

        end_col -= 1

        # 下边
        for i in range(end_col, start_col - 1, -1):
            curr = matrix[end_row][i]
            matrix[end_row][i] = prev
            prev = curr

        end_row -= 1

        # 左边
        for i in range(end_row, start_row - 1, -1):
            curr = matrix[i][start_col]
            matrix[i][start_col] = prev
            prev = curr

        start_col += 1

    return matrix

这段代码使用了一个循环来逐层旋转矩阵。通过定义四个边界变量(start_row、end_row、start_col、end_col),每次循环都按照顺时针方向旋转矩阵的一层。在每个方向上,使用一个临时变量prev来保存当前位置的元素,并将当前位置的元素更新为前一个位置的元素。最后返回旋转后的矩阵。

这段代码的时间复杂度为O(m*n),其中m和n分别为矩阵的行数和列数。空间复杂度为O(1),因为只使用了常数级别的额外空间。

腾讯云相关产品和产品介绍链接地址:

请注意,以上产品仅作为示例,实际选择产品时需根据具体需求进行评估和选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券