leetcode——48. 旋转图像

可能是找到了对的学习方法,更有感觉,就清晰地做出来就觉得很开心。

class Solution(object):
    def rotate(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: None Do not return anything, modify matrix in-place instead.
        """
        l=len(matrix)
        if l<2:
            return matrix
        for i in range(l):
            matrix[i]=matrix[i][::-1]
        i=0
        while i<len(matrix)-1:
            j=0
            while i+j<len(matrix)-1:
                matrix[i][j],matrix[l-j-1][l-i-1]=matrix[l-j-1][l-i-1],matrix[i][j]
                j+=1
            i+=1
        return matrix
执行用时 :24 ms, 在所有 python 提交中击败了86.87%的用户
内存消耗 :11.8 MB, 在所有 python 提交中击败了25.46%的用户

 

每次性能也还可以。

先旋转再对调。

 

但是厉害的人还是好厉害!!!!

执行用时为 12 ms 的范例
class Solution(object):
    def rotate(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: None Do not return anything, modify matrix in-place instead.
        """
        matrix[:]=map(list,zip(*matrix[::-1]))

这里用到了map()函数:

用到了zip()函数:

描述

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。

这种解法很神奇了。

 

厉害了。

                                                               ——2019.10.14

 

 


 

 

到底还是有规律可循

做出来了。

public void rotate(int[][] matrix) {
        int len = matrix.length;
        if(len <= 1){
            return;
        }
        for(int i = 0;i<(len+1)/2;i++){
            for(int j = i;j<len - i - 1;j++){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[len - 1 - j][i];
                matrix[len - 1 - j][i] = matrix[len - 1 - i][len - 1 - j];
                matrix[len - 1 - i][len - 1 - j] = matrix[j][len - 1 - i];
                matrix[j][len - 1 - i] = temp;
            }
        }
    }

 

 

——2020.7.10

 

posted @ 2019-10-14 15:06  欣姐姐  阅读(229)  评论(0编辑  收藏  举报