Java怎么将节点转化为两两合并

46次阅读
没有评论

共计 1261 个字符,预计需要花费 4 分钟才能阅读完成。

本篇内容主要讲解“Java 怎么将节点转化为两两合并”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让丸趣 TV 小编来带大家学习“Java 怎么将节点转化为两两合并”吧!

/**
 *
 *  转化为两两合并
 */
public class ReverseKGroup { public static void main(String[] args) { ListNode l1 = new ListNode(1);
 ListNode n1 = new ListNode(3);
 ListNode n2 = new ListNode(4);
 ListNode n3 = new ListNode(5);
 l1.next = n1;
 n1.next = n2;
 n2.next = n3;
 ReverseKGroup mt = new ReverseKGroup();
 ListNode head = mt.reverseKGroup(l1,2);
 Utils.print(head);
 }

 public ListNode reverseKGroup(ListNode head, int k) { if (k == 1 || head == null || head.next == null)  return head;  ListNode preHead = new ListNode(-1);  preHead.next = head;  ListNode first = head, last = head;  ListNode preGroup = preHead, nextGroup = preHead;  int count = 1;  while (last != null) { if (count == k) { // 当满足 k 个组合时进行翻转  nextGroup = last.next; // 下一个组合的首节点  reverseList(first, last);  preGroup.next = last; // 翻转之后 last 已经是首节点  preGroup = first; //preGroup 设置自己为最末, 此后 first 继续下一个组合, 采用 preGroup 的深意, 是不打扰 first 继续下一个组合
 private void reverseList(ListNode head, ListNode tail) { ListNode pre = new ListNode(-1), node = head;  pre.next = head;  while (pre != tail) {  ListNode temp = node.next;  node.next = pre;  pre = node;  node = temp;  }  }
}

到此,相信大家对“Java 怎么将节点转化为两两合并”有了更深的了解,不妨来实际操作一番吧!这里是丸趣 TV 网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计1261字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)