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; } }