
js
/**
* @param {number[]} nums
* @param {number} k
* @return {void} Do not return anything, modify nums in-place instead.
*/
var rotate = function (nums, k) {
k = k % nums.length
const tmp = k ? nums.slice(-k) : []
console.log(tmp)
nums.splice(-k, k)
nums.splice(0, 0, ...tmp)
}一句话思路:原地反转所有元素,在反转前k个元素,在反转后n-k个元素

更好的答案
js
/**
* @param {number[]} nums
* @param {number} k
* @return {void} Do not return anything, modify nums in-place instead.
*/
var rotate = function (nums, k) {
k %= nums.length
// 反转 [i, j] 的所有元素
function reverse(i, j) {
while (i < j) {
;[nums[i], nums[j]] = [nums[j], nums[i]]
i++
j--
}
}
reverse(0, nums.length - 1)
reverse(0, k - 1)
reverse(k, nums.length - 1)
}