将数组循环顺移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次189 Rotate Array

解决思路四

反转数组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

相关文章:

  • 2021-10-09
  • 2021-08-13
  • 2021-12-23
  • 2021-08-14
  • 2021-06-04
  • 2021-11-02
  • 2021-12-14
猜你喜欢
  • 2022-12-23
  • 2021-12-12
  • 2022-12-23
  • 2021-11-12
  • 2021-06-02
相关资源
相似解决方案