Java 代码实现链表节点每 K 个一组翻转
public ListNode reverseKGroup(ListNode head, int k) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode prev = dummy;
ListNode curr = head;
int count = 0;
while (curr != null) {
count++;
if (count % k == 0) {
// 翻转当前组
prev = reverse(prev, curr.next);
curr = prev.next;
} else {
curr = curr.next;
}
}
return dummy.next;
}
// 翻转prev->n1->...->nk->next为prev->nk->...->n1->next
private ListNode reverse(ListNode prev, ListNode next) {
ListNode last = prev.next; // 记录翻转后的最后一个节点
ListNode curr = last.next;
while (curr != next) {
last.next = curr.next;
curr.next = prev.next;
prev.next = curr;
curr = last.next;
}
return last;
}
原文地址: https://www.cveoy.top/t/topic/mQOT 著作权归作者所有。请勿转载和采集!