标签:head 通过 tno 链表 nbsp 翻转 lin linked div
给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。
k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。
示例 :
给定这个链表:1->2->3->4->5
当 k = 2 时,应当返回: 2->1->4->3->5
当 k = 3 时,应当返回: 3->2->1->4->5
说明 :
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { val = x; } 7 * } 8 */ 9 10 /* 11 通过递归的方式 12 */ 13 class Solution { 14 public ListNode reverseKGroup(ListNode head, int k) { 15 ListNode end=head; 16 int n=0; 17 for(int i=0;i<k;i++){ 18 //若此时节点总数不足k,则直接返回头结点 19 if(end==null) 20 return head; 21 else 22 end=end.next; 23 } 24 ListNode next=head.next; 25 ListNode tmphead=head; 26 //进行翻转 27 for(int i=1;i<k;i++){ 28 ListNode tmp=next.next; 29 next.next=tmphead; 30 tmphead=next; 31 next=tmp; 32 } 33 //递归,将下一个结点传入 34 head.next=reverseKGroup(end,k); 35 return tmphead; 36 } 37 }
标签:head 通过 tno 链表 nbsp 翻转 lin linked div
原文地址:https://www.cnblogs.com/lyh28/p/10631430.html