1. 程式人生 > 其它 >【LeetCode】每日一題86. 分隔連結串列

【LeetCode】每日一題86. 分隔連結串列

技術標籤:每日一題javaleetcode連結串列

86. 分隔連結串列

給你一個連結串列和一個特定值 x ,請你對連結串列進行分隔,使得所有小於 x 的節點都出現在大於或等於 x 的節點之前。

你應當保留兩個分割槽中每個節點的初始相對位置。

示例:

  • 輸入:head = 1->4->3->2->5->2, x = 3
  • 輸出:1->2->2->4->3->5

方法一:拆分連結串列

將連結串列拆分為兩段,小於 x 的為一段,大於等於 x 的為一段,拆分完成後,合併兩段連結串列。返回小於 x 那段的頭節點

public ListNode partition
(ListNode head, int x) { ListNode low = new ListNode(0), high = new ListNode(0); ListNode lowHead = low, highHead = high; while(head != null) { if (head.val < x) { low.next = head; low = low.next; } else { high.next = head; high =
high.next; } head = head.next; } low.next = highHead.next; high.next = null; return lowHead.next; }

執行結果

在這裡插入圖片描述