K 个一组翻转链表
2026/7/22 13:43:45 网站建设 项目流程

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(head==null||head.next==null){returnhead;}ListNoderoot=newListNode(0);root.next=head;ListNodepre=root;while(true){ListNodeend=pre;for(inti=0;i<k;i++){end=end.next;if(end==null){returnroot.next;}}ListNodenextGroup=end.next;ListNodecur=pre.next;ListNodepr=null;ListNodestart=cur;for(inti=0;i<k;i++){ListNodenext=cur.next;cur.next=pr;pr=cur;cur=next;}pre.next=pr;start.next=nextGroup;pre=start;}}}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询