感谢腌菜读作梦想
反转链表部分的题解写的非常好
芜湖~~~
class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
ListNode dummy = new ListNode(-1, head);
ListNode pre = dummy;
ListNode end = dummy;
while (end != null) {
for (int i = 0; i < k && end != null; i++) {
end = end.next;
}
if (end == null) {
break;
}
ListNode start = pre.next;
ListNode next = end.next;
end.next = null;
reverse(start);
pre.next = end;
start.next = next;
pre = start;
end = start;
}
return dummy.next;
}
public ListNode reverse(ListNode head) {
ListNode cur = head;
ListNode end = null;
while (cur != null) {
ListNode tmp = cur.next;
cur.next = end;
end = cur;
cur = tmp;
}
return end;
}
}