本文最初发表:http://03071344.lofter.com/post/10871e_2c4556
LeetCode对应题目:Rotate Array
本文讨论如何对一段连续的内存空间(如int型数组、char型数组)的内容进行循环移动。例如我们有一个数组,定义如下:int num[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9};现要对num数组的内容循环移动4位。
解法一
我们可以申请4个连续的int变量空间temp[4],然后将num末4位元素放置在temp中。即
temp -> 6, 7, 8, 9
然后从后往前将num中的元素依次向后移动4位,结果为:
num -> 1, 2, 3, 4, 1, 2, 3, 4, 5
最后,再将temp中的元素放置在num指向的内存空间的前方。于是
num -> 6, 7, 8, 9, 1, 2, 3, 4, 5
这就得到了我们想要的结果。
解法二
我们可以对上述解法进行优化。特别地ÿ