共计 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 网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
正文完