关于线性表的一些很有意思的题目1

来源:互联网 发布:centos 6.9 内核版本 编辑:程序博客网 时间:2024/05/16 08:53

题目1将n个整数存放在数组中,设计一个算法在时间复杂度上和空间复杂度上尽可能简单的算法,让数组顺序向左移动R位,让数组从(0,1,2,3,4,5,6,7)------>(3,4,5,6,7,0,1,2)

 

 

解题思路我们在线性代数中碰见过A和它的转制,这就是这个题目的思路;(A(T)B(T))(T)=BA ;(这里的A(T)是指A的转制),我们发现通过这样的转化,可以将AB的位置换一下;


我们就以可以例子为例在做一下:(向左移动3位)

1.先对(0.1.2)进行转制变成(2.1.0),这个过程的效率n/2

2.在对(3,4,5,6,7)进行转制变成(7,6,5,4,3)

3.最后在对上面已经转制过后的数组(2,1,0,7,6,5,4,3)转制成(3,4,5,6,7,0,1,2)

 

这样就可以很好的解决这个问题,这个方法的时间复杂度为O(n)  空间复杂度为O(1)

 

程序

 

 

 

 

 

 

有其他更加好的方法,可是我觉得有点投机取巧,所以就不介绍了.....


原创粉丝点击