java
class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
ListNode dummy = new ListNode(-1);
dummy.next = head;
for(ListNode p = dummy;;){
ListNode q = p;
// 对于链表中的每一个点, 先遍历其后的k个点, 如果遍历完为空, 说明不够k个点
for(int i = 0; i < k && q != null; i ++){
q = q.next;
}
if(q == null) break;
//开始翻转对k个节点进行内部翻转, 需要翻转k-1次
ListNode a = p.next, b = a.next;
for(int i = 0; i < k-1; i++){
ListNode c = b.next;
b.next = a;
a = b;
b = c;
}
// 这一步画图去观察
ListNode c = p.next;
p.next = a;
c.next = b;
// 更新链表到下一个节点
p = c;
}
return dummy.next;
}
}
你这个代码是LC25的吧
嗯嗯, 写错了已更新~