题目:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
示例 1:输入:[1,2,3,4,5,6,7] 和 k = 3。输出: [5,6,7,1,2,3,4]
示例 2:输入: [-1,-100,3,99] 和 k = 2。输出: [3,99,-1,-100]
思路:
方法一:新建一个数组,先将后面位置的元素依次放入,然后再将剩下的依次放入。再把这个放好位置的数组元素拷贝到原数组中。
方法二:保证空间复杂度为 O(1) 的原地算法。此时应该是原地移位,首先设置一个变量,将后面的需要动的第一个元素赋值给它,同时将前面每一个元素依次后移一位,再将变量里的值赋给数组的首元素。然后再循环执行上述过程。
源码:GitHub源码
方法一:这一方法最主要的就是弄懂“a[(i + k) % nums.length] = nums[i];”这一步。

方法二:
