K 个一组翻转链表

发布时间:2026/7/22 13:44:02
K 个一组翻转链表 K 个一组翻转链表题目给你链表的头节点 head 每 k 个节点一组进行翻转请你返回修改后的链表。k 是一个正整数它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值而是需要实际进行节点交换。示例 1输入head [1,2,3,4,5], k 2输出[2,1,4,3,5]解题思路核心点还是反转链表只是需要不止反转一次需要加入循环即可/** * 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; } * } */classSolution{publicListNodereverseKGroup(ListNodehead,intk){if(headnull||head.nextnull){returnhead;}ListNoderootnewListNode(0);root.nexthead;ListNodepreroot;while(true){ListNodeendpre;for(inti0;ik;i){endend.next;if(endnull){returnroot.next;}}ListNodenextGroupend.next;ListNodecurpre.next;ListNodeprnull;ListNodestartcur;for(inti0;ik;i){ListNodenextcur.next;cur.nextpr;prcur;curnext;}pre.nextpr;start.nextnextGroup;prestart;}}}