给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。
k 是一个正整数,它的值小于或等于链表的长度。
如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-nodes-in-k-group
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
输入:head = [1,2,3,4,5], k = 2 输出:[2,1,4,3,5]
思路:
通过尾插法...
代码:
class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode pre = dummy;
ListNode tail = dummy;
ListNode headdb = pre.next;
while (true) {
int count = 0;
while (count != k && tail != null) {
count++;
tail = tail.next;
}
if (tail == null) break;
while (pre.next != tail) {
ListNode temp = pre.next;
pre.next = temp.next;
temp.next = tail.next;
tail.next = temp;
}
pre = headdb;
tail = headdb;
headdb = pre.next;
}
return dummy.next;
}
}