189 Rotate Array
将数组循环顺移k个位置
Example 1:
Input: [1,2,3,4,5,6,7] and k = 3
Output: [5,6,7,1,2,3,4]
Explanation:
rotate 1 steps to the right: [7,1,2,3,4,5,6]
rotate 2 steps to the right: [6,7,1,2,3,4,5]
rotate 3 steps to the right: [5,6,7,1,2,3,4]
解决思路一
将数组每次向后移动一个位置,重复k次,此方法时间超时
解决思路二
用一个辅助数组进行直接拷贝,accepted,但是空间复杂度为n
解决思路三
循环交换数组的位置,如下图所示,直接将数据放入数组的正确位置,并将此循环重复k次
解决思路四
反转数组3次,不需要多余空间
Let n=7n=7 and k=3k=3.
Original List : 1 2 3 4 5 6 7
After reversing all numbers : 7 6 5 4 3 2 1
After reversing first k numbers : 5 6 7 4 3 2 1
After revering last n-k numbers : 5 6 7 1 2 3 4 --> Result