域名网站免费建站,相亲网站建设策划方案,建设代刷网站,爱疯卷网站怎么做25.K个一组翻转链表 思路#xff1a;
把链表节点按照k个一组分组#xff0c;可以使用一个指针head依次指向每组的头节点#xff0c;这个指针每次向前移动k步#xff0c;直至链表结尾#xff0c;对于每个分组#xff0c; 先判断它的长度是否大于等于k#xff0c;若是
把链表节点按照k个一组分组可以使用一个指针head依次指向每组的头节点这个指针每次向前移动k步直至链表结尾对于每个分组 先判断它的长度是否大于等于k若是就翻转这部分链表否则不需要翻转
/*** 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) {ListNode hair new ListNode(0);hair.next head;ListNode pre hair;while(head ! null){ListNode tail pre;//查看剩余部分长度是否大于等于kfor(int i 0 ;ik;i){tail tail.next;if(tail null){return hair.next;}}ListNode next tail.next;ListNode[] reverse Reverse(head,tail);head reverse[0];tail reverse[1];//把子链表重新接回原链表pre.next head;tail.next next;pre tail;head tail.next;}return hair.next;}//反转链表返回子链表的头部与尾部public ListNode[] Reverse(ListNode head,ListNode tail){ListNode prev tail.next;ListNode p head;while(prev ! tail){ListNode next p.next;p.next prev;prev p;p next;}return new ListNode[]{tail,head};}
}