请实现方法:print_rotate_matrix(intmatrix,int n),该方法用于将一个n*n的二维数组逆时针旋转45°后打印,例如,下图显示一个3*3的二维数组及其旋转后屏幕输出的效果。
【正确答案】本题的思路为:从右上角开始对数组中的元素进行输出,实现代码如下:
def rotateArr(arr):
lens=len(arr)
#打印二维数组右上半部分
i=lens-1
while i>0:
row=0
col=i
while col<lens:
print arr[row][col],
row+=1
col+=1
print '\n'
i-=1
#打印二维数组左下半部分(包括对角线)
i=0
while i<lens:
row=i
col=0
while row<lens:
print arr[row][col],
row+=1
col+=1
print '\n'
i+=1
if __name__="__main__":
arr=[[1,2,3l,[4,5,6l,[7,8,9]]
rotateArr(arr)
程序的运行结果为:
3
2 6
1 5 9
4 8
7
算法性能分析:
这种方法对数组中的每个元素都遍历了一次,因此,算法的时间复杂度为O(n2)。
【答案解析】[考点] 如何对数组旋转