25. K 个一组翻转链表 - 力扣(LeetCode)
解题思路:使用递归的思想,以k个节点为一组进行处理和递归就能解决。要注意的是k等于1的情况需要特判。
最后以p为下一组的起点进行递归,然后返回pre让上一个进行链接。
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode reverseKGroup(ListNode head, int k) {if(k==1){return head;}int i=0;ListNode p=head;while(p!=null&&i<k){p=p.next;i++;}if(i<k){return head;}ListNode n,pre=head;i=0;p=pre.next;n=p.next;while(i<k-1){n=p.next;p.next=pre;pre=p;p=n;i++;}head.next=reverseKGroup(p,k);return pre;}
}