现有一个NxN的矩阵,阶数为N,请编写一个算法将矩阵顺时针旋转90度并将其作为返回值。要求不使用缓存矩阵,保证N不大于500,元素不大于256,每个元素用int表示。
测试样例:
[[1,2,3],[4,5,6],[7,8,9]],3
返回:[[7,4,1],[8,5,2],[9,6,3]]
语言是python2.7,思路是zip迭代 + map映射,参考了http://baijiahao.baidu.com/s?id=1579306472315552043&wfr=spider&for=pc 代码如下
# -*- coding:utf-8 -*- class Transform: def transformImage(self, mat, n): mat.reverse() return map(list,zip(*mat))
class Transform: def transformImage(self, mat, n): return map(lambda x:list(x)[::-1], zip(*mat))
# -*- coding:utf-8 -*- class Transform: def transformImage(self, mat, n): if n <= 1: return mat for i in xrange(n/2): self.transformRound(mat, i, n - 1 - i, n) return mat def transformRound(self, mat, start, end, n): if start == end: return for i in range(start, end): tmp = mat[start][i] mapd = n - 1 - i mat[start][i] = mat[mapd][start] mat[mapd][start] = mat[end][mapd] mat[end][mapd] = mat[i][end] mat[i][end] = tmp