栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

旋转图像问题【python实现】

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

旋转图像问题【python实现】

问题描述:

给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。

你必须在 **原地旋转图像,这意味着你需要直接修改输入的二维矩阵。**请不要使用另一个矩阵来旋转图像。

示例 1:

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

示例 2:

输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]

示例 3:

输入:matrix = [[1]]
输出:[[1]]

示例 4:

输入:matrix = [[1,2],[3,4]]
输出:[[3,1],[4,2]]
实现方式:
def rotate(matrix):
    if matrix is None or len(matrix) == 1:  # 矩阵为空或为1
        return
    ls = len(matrix)  # 矩阵的高
    for i in range(int(ls / 2)):  # 索引遍历
        begin, end = i, ls - 1 - i  # 以高度中线为对称轴两数的索引
        for k in range(ls - 2 * i - 1):
            temp = matrix[end - k][begin]
            matrix[end - k][begin] = matrix[end][end - k]
            matrix[end][end - k] = matrix[begin + k][end]
            matrix[begin + k][end] = matrix[begin][begin + k]
            matrix[begin][begin + k] = temp
            print(f"temp=matrix[{end-k}][{begin}]")
            print(f"matrix[{end - k}][{begin}] = matrix[{end}][{end - k}]")
            print(f"matrix[{end}][{end - k}] = matrix[{begin + k}][{end}]")
            print(f"matrix[{begin + k}][{end}] = matrix[{begin}][{begin + k}]")
            print(f"matrix[{begin}][{begin + k}] = temp")
            print("---"*20)
    return matrix


if __name__ == '__main__':
    print(rotate([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]))
    # print(s.rotate([[1, 2], [3, 4]]))
result:
temp=matrix[3][0]
matrix[3][0] = matrix[3][3]
matrix[3][3] = matrix[0][3]
matrix[0][3] = matrix[0][0]
matrix[0][0] = temp
------------------------------------------------------------
temp=matrix[2][0]
matrix[2][0] = matrix[3][2]
matrix[3][2] = matrix[1][3]
matrix[1][3] = matrix[0][1]
matrix[0][1] = temp
------------------------------------------------------------
temp=matrix[1][0]
matrix[1][0] = matrix[3][1]
matrix[3][1] = matrix[2][3]
matrix[2][3] = matrix[0][2]
matrix[0][2] = temp
------------------------------------------------------------
temp=matrix[2][1]
matrix[2][1] = matrix[2][2]
matrix[2][2] = matrix[1][2]
matrix[1][2] = matrix[1][1]
matrix[1][1] = temp
------------------------------------------------------------
[[13, 9, 5, 1], [14, 10, 6, 2], [15, 11, 7, 3], [16, 12, 8, 4]]

Process finished with exit code 0
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/887068.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号