共計 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 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
正文完