要求:
将一个n*n的二维数组逆时针旋转45°后打印。
分析:
从右上角开始对数组中的元素进行输出
实现代码:
# -*- coding:utf-8 -*-
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,3],[4,5,6],[7,8,9]]
rotateArr(arr)
运行结果:
3
2
6
1
5
9
4
8
7
性能分析:
此算法对数组中每个元素都遍历了一次,因此,时间复杂度为O()。