看《编程珠玑》第二章,看到的。
对于移位算法,有数组a[7] : 1 , 2 , 3 , 4 , 5 , 6 , 7
要求向左旋转两位(向左循环移动2位)。显然结果是 3 4 5 6 7 1 2 .
通常的做法是开辟两个单元的空间来存储1 2 然后将后面的所有字符向左移动2位。最后将1 2 插入末尾即可。
这样做可以,加入移动i位必须得浪费i个空间,并且时间复杂度也不低。
《编程珠玑》告诉我们,通常降低空间复杂的同时还能降低时间复杂!因为空间的减少使用意味着更少的操作。一定存在一个简单的方法来解决问题。
Read full article from 两种巧妙的移位算法 丨 永不冷�龅娜松�
No comments:
Post a Comment