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

猜你喜欢

转载自blog.csdn.net/weixin_42521881/article/details/85112396