给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。javascript
k 是一个正整数,它的值小于或等于链表的长度。java
若是节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。git
示例 :github
给定这个链表:1->2->3->4->5oop
当 k = 2 时,应当返回: 2->1->4->3->5spa
当 k = 3 时,应当返回: 3->2->1->4->5code
var reverseList = function(head) {
let pre = null
let curr = head
let next;
while (curr != null) {
next = curr.next
curr.next = pre;
pre = curr;
curr = next;
}
return pre
};
var reverseKGroup = function(head, k) {
let revList = new ListNode(0)
revList.next = head
let pre = revList
let end = revList
let loopCurr = head
while (end != null) {
for(let i = 0; i < k && end != null; i ++ ) {
end = end.next
}
if (end == null) break;
let start = pre.next
let next = end.next
end.next = null;
pre.next = reverseList(start);
start.next = next;
pre = start;
end = pre;
}
return revList.next
};
复制代码
题解回头补上,太晚了,先休息了。
源码ip