关于旋转数组的另类方法
灵感来源于洛谷P4924
题目很简单,一个简单的模拟就可以完成
方法1:
开一个辅助数组进行存储,然后利用下标进行copy(文章需要,不在此赘述)
全新的方法:
采用行列式的转置
知识补充:百度百科之行列式的转置
原来的行列式:
1 | 2 |
---|---|
3 | 4 |
转置后的行列式:
1 | 3 |
---|---|
2 | 4 |
也就是将原数组的数据沿着主对角线(从左上到右下)对称
转置之后,旋转就变得轻而易举
如果顺时针旋转90°,那么就交换列:
将第i列与第n-i+1列交换
如果逆时针旋转90°,那么就交换行:
将第i行与第n-i+1行交换
重点:交换一半,如果循环到n,那就没有区别了
简言之:
这个方法的步骤:
- 求出转置数组
- 按要求交换行或列
- 得到目标数组
优点:(个人觉得)减少空间,毕竟不用多开数组
各位可以手动试试,若有问题请在讨论区回复