问题: 将 一个n元向量向左旋转i个位置。例如,当n=8且i=3时,向量abcdefgh旋转为defghabc。使用一个临时变量实现。 技巧1: 移动a[0] 到临时变量t, 然后移动a[i] 至a[0] ,a[2i] 至a[i] ,以此类推(将a 中所有下标对n 取模),直到返回到取a[0] 中的元素。 如果该过程没有移动全部元素,就从a[1]开始再次移动,直到所有元素全部移动为止。
技巧2: 定义一个函数将a向左旋转一个位置(其时间正比于n)然后调用该函数i次。该方法产生过多的运行时间消耗。
技巧3: 可以看作把数组ab转换成ba,同时假定我们拥有一个函数可以把数组特定部分求逆。从ab开始,首先对a求逆,得到(a^r)b,然后对b求逆,得到(a^rb^r)。最后整体求逆,得到(a^rb^r)^r。此时恰好是ba。程序实现: