【LeetCode】每日一題86. 分隔連結串列
阿新 • • 發佈:2021-01-10
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;
}