189. 旋转数组

给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
输入: nums = [1,2,3,4,5,6,7], k = 3
输出: 【5,6,7,1,2,3,4】

  1. //三次翻转,时间On,空间O1
  2. func rotate(nums []int, k int) {
  3. n := len(nums)
  4. k = k%n
  5. run(nums[:n-k])
  6. run(nums[n-k:])
  7. run(nums)
  8. }
  9. func run(nums []int) {
  10. l, r := 0, len(nums)-1
  11. for l < r {
  12. nums[l], nums[r] = nums[r], nums[l]
  13. l++
  14. r--
  15. }
  16. }