题目:
这道题如果没有空间的限制的话,我们可以将前k个数按顺序存入栈中,再依次取出,根据栈的特性,他们是倒序的排列,可惜空间负责度是O(K)
所以我们只能选用其他的方法
最终,我选择了尾插法
代码如下:
class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode pre = dummy;
ListNode tail = dummy;
ListNode cur=null;
ListNode head1=null;
while (true) {
int count = 0;
while (tail != null && count != k) {
count++;
tail = tail.next;
}
if (tail == null) break;
head1 = pre.next;
while (pre.next != tail) {
cur = pre.next;
pre.next = cur.next;
cur.next = tail.next;
tail.next = cur;
}
pre = head1;
tail = head1;
}
return dummy.next;
}
}
运行结果如下: