leetcode 每日一题 48. 旋转图像

Posted nil_f

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 每日一题 48. 旋转图像相关的知识,希望对你有一定的参考价值。

转置加翻转

思路:

先把矩阵转置,然后把每一行元素翻转。即遍历元素,交换matrix[i][j]和matrix[j][i],然后翻转每一个子数组。

代码:

 

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):
                matrix[j][i],matrix[i][j] = matrix[i][j],matrix[j][i]
        for i in range(n):
            matrix[i].reverse()

遍历旋转

思路:

遍历交换4条边上的元素。

代码:

class Solution:
    def rotate(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: void Do not return anything, modify matrix in-place instead.
        """
        n = len(matrix[0])        
        for i in range(n // 2 + n % 2):
            for j in range(n // 2):
                tmp = matrix[n - 1 - j][i]
                matrix[n - 1 - j][i] = matrix[n - 1 - i][n - j - 1]
                matrix[n - 1 - i][n - j - 1] = matrix[j][n - 1 -i]
                matrix[j][n - 1 - i] = matrix[i][j]
                matrix[i][j] = tmp

 

以上是关于leetcode 每日一题 48. 旋转图像的主要内容,如果未能解决你的问题,请参考以下文章

《LeetCode之每日一题》:126.旋转图像

《LeetCode之每日一题》:268.寻找旋转数组中的最小值

《LeetCode之每日一题》:60.搜索旋转排序数组

《LeetCode之每日一题》:17. 旋转数组

《LeetCode之每日一题》:71.翻转图像

《LeetCode之每日一题》:48.连续的子数组和