可能是找到了对的学习方法,更有感觉,就清晰地做出来就觉得很开心。
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