Loading

Leetcode - 48. 旋转图像

给定一个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]]

提示:

  • matrix.length == n
  • matrix[i].length == n
  • 1 <= n <= 20
  • -1000 <= matrix[i][j] <= 1000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rotate-image
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解1 2021/9/7 O(n2)

def rotate(matrix: list) -> None:
    """
    Do not return anything, modify matrix in-place instead.
    """
    '''
    题目限制了nxn
                  0   1   2   3
    matrix([0   [ 1, -2,  3,  4],
            1   [ 0,  4,  5,  4],
            2   [ 7,  8, -9,  4],
            3   [-1, -2, -3, -4]])
    有一定的规律
    比如:
    0,0 换到 0,3
    0,3 -> 3,3
    3,3 -> 3,0  //m[3][0]=m[3][3]
    3,0 -> 0,0  //m[0][0]=m[3][0]
    
    0,1 -> 1,3  //m[1][3]=m[0][1]
    1,3 -> 3,2  //m[3][2]=m[1][3]
    3,2 -> 2,0
    2,0 -> 0,1
    
    1,1 -> 1,2
    1,2 -> 2,2
    2,2 -> 2,1
    2,1 -> 1,1
    总结,
    x,y -> y,len-1-x    //m[y][len-1-x]=m[x][y],
    从外面往里面一圈一圈的换
    '''
    n=matrix[0].__len__()
    # 最外围是0,0开始,之后1,1,n=4,就到1为止,n=3,到0位置,n=5,到1为止,n=6,到2为止
    # 总结,就是到n//2-1为止
    i=0
    end=n//2-1
    while i<=end:
        for x in range(i,n-1-i):
            # 从i,x开始换,逆时针的换,少点中间变量的赋值
            tmp=matrix[i][x]
            # x,y逆时针下一个数是n-1-y,x
            matrix[i][x]=matrix[n-1-x][i]
            matrix[n-1-x][i]=matrix[n-1-i][n-1-x]
            matrix[n-1-i][n-1-x]=matrix[x][n-1-i]
            matrix[x][n-1-i]=tmp
        i+=1
    # print(matrix)

if __name__ == '__main__':
    matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    rotate(matrix)
    matrix = [[5, 1, 9, 11], [2, 4, 8, 10], [13, 3, 6, 7], [15, 14, 12, 16]]
    rotate(matrix)
    matrix = [[1]]
    rotate(matrix)
    matrix = [[1, 2], [3, 4]]
    rotate(matrix)

posted @ 2021-09-07 13:00  wwcg2235  阅读(103)  评论(0)    收藏  举报