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

旋转矩阵 python

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

旋转矩阵 python

给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。

1.最容易想到的暴力法。仔细看矩阵下标会发现,90°旋转是将[i][j]位置的值置换成[n-j-1][i]位置的值(n为长度)

class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        import copy
        tmp=copy.deepcopy(matrix)
        n = len(matrix)
        for i in range(n):
            for j in range(n):
                tmp[i][j] = matrix[n-j-1][i]
        for i in range(n):
            for j in range(n):
                matrix[i][j] = tmp[i][j]

ps:上面用了一个复制矩阵,因为我不会创建一个同样规格的矩阵哭了。这样好像很麻烦的样子。因为要在原矩阵修改,就再换一遍。

import numpy as np
x,y = map(int,input().split())
a = np.ones((x+1,y+1))

pss:上面这样就能生成一个x*y的全一矩阵,然后再换值也行。不过好像也挺麻烦。

2.先横向镜面翻转,再对角线翻转。

		n = len(matrix)
        # 先在横向上进行镜面翻转
        for i in range(n // 2):
            for j in range(n):
                tmp = matrix[i][j]
                matrix[i][j] = matrix[n - 1 - i][j]
                matrix[n - 1 - i][j] = tmp

        # 然后沿对角线翻转
        for i in range(n):
            for j in range(i):
                matrix[j][i], matrix[i][j] = matrix[i][j], matrix[j][i]

3.先对角线翻转,再行revers

class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        n = len(matrix)
        for i in range(n):
            for j in range(i, n, 1):
                matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
        for i in range(n):
            matrix[i].reverse()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/833720.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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