题解 | #链表中的节点每k个一组翻转#
链表中的节点每k个一组翻转
https://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e
好耶i简简单单 递归永远的神!!!!!!!!!!!!!
public ListNode reverseKGroup (ListNode head, int k) {
// write code here
int j=1;
ListNode c=head;
if (head == null || k == 1 ||head.next==null) {
return head;
}
//每组进行存入 ps:不足的的正序输出
Stack<ListNode> stack = new Stack<>();
for (int i = 0; i < k; i++) {
stack.push(head);
// System.out.print(i);
// System.out.print("&"+head.next.val);
if (head.next == null) {
head = null;
break;
} else {
// System.out.print(" head***:" + head.val);
head = head.next;
}
j++;
}
// ps:不足的的正序输出 这里进行输出
if(j<k)return c;
ListNode nex = stack.peek(), tem, top = nex;
//nex =2
//nex获取表头 tem进行排序
int m =0;
while (!stack.empty()) {
tem = stack.pop();
// System.out.print(" tem: "+tem.val);
// System.out.print(tem.val);
// stack.empty()==null?tem.next=stack.peek():tem.next=null;
if (!stack.empty()) {
tem.next = stack.peek();
}
else {
// System.out.print(" nex:"+nex.val);
// System.out.print(" head:"+head);
tem.next = reverseKGroup(head, k);
}
}
// System.out.print(" top:"+top.val);
return top;
}
}


