Const
Do not return anything, modify nums in-place instead.
找轮转规律,看三个角色的关系:轮转次数k,数组长度nums.length,位置i剩余向右轮转次数maxX = nums.length - i - 1。 先看k跟数组长度关系,k小于数组长度,那么k一定会转至少一轮让整个数组元素回到原来位置,比如这里0转3次回到原位,那么需要不断削减k直到小于nums.length 削减完成后,再看k跟maxX关系,k小于maxX,那么计算各元素的位置就是 位i,最终的新位置是 newLoc = i + k; 当 k > maxX,那么多出来的转动次数leftX = k - maxX 那么相当于从头开始排新位置,则新的位置newLoc = leftX - 1; 最后记住新位置和数然后放到原数组上。
189.轮转数组
给定一个整数数组
nums
,将数组中的元素向右轮转k
个位置,其中k
是非负数。示例 1:
输入:
nums = [1,2,3,4,5,6,7], k = 3
输出:
[5,6,7,1,2,3,4]
解释: 向右轮转 1 步:
[7,1,2,3,4,5,6]
向右轮转 2 步:
[6,7,1,2,3,4,5]
向右轮转 3 步:
[5,6,7,1,2,3,4]
示例 2:
输入:
nums = [-1,-100,3,99], k = 2
输出:
[3,99,-1,-100]
解释: 向右轮转 1 步:
[99,-1,-100,3]
向右轮转 2 步:
[3,99,-1,-100]
提示:
1 <= nums.length <= 10^5
-2^{31} <= nums[i] <= 2^{31} - 1
0 <= k <= 10^5