嵌入式MCU外设保护与电源管理:TI Hercules寄存器实战解析
2026/7/22 15:11:10
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;}}}