难度:Hard
思路1
递归,然后逆转前k个元素
class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
int cnt = 0;
ListNode cur = head;
while (cur != null && cnt != k) {
cur = cur.next;
cnt++;
}
if (k == cnt) {
ListNode next = reverseKGroup(cur, k);
while (cnt-- > 0) {
ListNode tmp = head.next;
head.next = next;
next = head;
head = tmp;
}
return next;
}
return head;
}
}
复制代码
思路2
迭代