旋转列表
小于 1 分钟
旋转列表
给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。

输入:head = [1,2,3,4,5], k = 2
输出:[4,5,1,2,3]
解法
var rotateRight = function(head, k) {
if(!head || !head.next){return head}
// 连接成环
let tail = head
let length = 1 // 注意这里要先计数1
while(tail.next){
tail = tail.next
length++
}
tail.next = head
let newTail = head
k = k % length
// 移动 5-2 -1 次,移动到 指向3
for(let i = 1; i < length - k; i++){
newTail = newTail.next
}
// 让头指向 3的next,并将3的next指向null
head = newTail.next
newTail.next = null
return head
};