描述:给定一个数组 nums,再给定一个数字 k。

要求:将数组中的元素向右移动 k 个位置。

使用空间复杂度为 O(1) 的原地算法解决这个问题。

可以用一个新数组,先保存原数组的后 k 个元素,再保存原数组的前 n - k 个元素。但题目要求不使用额外的数组空间,那么就需要在原数组上做操作。

我们可以先把整个数组翻转一下,这样后半段元素就到了前边,前半段元素就到了后边,只不过元素顺序是反着的。我们再从 k 位置分隔开,将 [0...k - 1] 区间上的元素和 [k...n - 1] 区间上的元素再翻转一下,就得到了最终结果。