K个一组反转
leercode25
这是遇到的第一道困难题
这题思路很容易,但是实现起来会有一些边界问题,本质还是要搞清楚反转
准备有空再想一想反转,还是没有完全掌握
public ListNode reverseKGroup(ListNode head, int k) {
if(head == null || head.next == null) return head;
//设置虚拟节点
ListNode dummyNode = new ListNode(-1);
dummyNode.next = head;
ListNode cur = head;
int len = 0;//计算链表长度
while(cur != null) {
len++;
cur = cur.next;
}
int n = len/k;//计算有几组
ListNode pre = dummyNode;
cur = head;
for(int i = 0; i < n; i++) {
for(int j = 0; j < k - 1; j++) {
ListNode next = cur.next;
cur.next = next.next;
next.next = pre.next;
pre.next = next;
}
pre = cur;
cur = cur.next;
}
return dummyNode.next;
}