Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.node
You should preserve the original relative order of the nodes in each of the two partitions.less
Example:code
Input: head = 1->4->3->2->5->2, x = 3 Output: 1->2->2->4->3->5
難度:mediumit
題目:給定鏈表和一指定值X,以X爲參照將鏈表劃分爲小於X和大於等於X兩部分。保持原始鏈表中結點的順序不變。io
思路:將原始鏈表先拆分爲兩鏈表,一個收集因此小於X的,一個收集其它的。而後合併兩鏈表。ast
Runtime: 0 ms, faster than 100.00% of Java online submissions for Partition List.
Memory Usage: 36.7 MB, less than 0.90% of Java online submissions for Partition List.class
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode partition(ListNode head, int x) { ListNode lHead = new ListNode(0), lTail = lHead; ListNode geHead = new ListNode(0), geTail = geHead; ListNode ptr = head, node = null; while (ptr != null) { node = ptr; ptr = ptr.next; if (node.val < x) { lTail.next = node; lTail = node; } else { geTail.next = node; geTail = node; } } lTail.next = geHead.next; geTail.next = null; return lHead.next; } }