Partition List
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.
You should preserve the original relative order of the nodes in each of the two partitions.
For example,
Given1->4->3->2->5->2->null
and x = 3,return 1->2->2->4->3->5->null
.
SOLUTION:
其实就是快速排序嘛,比较简单,按照题意实现就对了,开两个头节点,一个放小于x的,一个放大于x的,再拼起来。
注意,注意,注意,链表的最后一定要指向null,就是右边的链表尾部一定要指向null!!!
代码:
/** * Definition for ListNode. * public class ListNode { * int val; * ListNode next; * ListNode(int val) { * this.val = val; * this.next = null; * } * } */ public class Solution { /** * @param head: The first node of linked list. * @param x: an integer * @return: a ListNode */ public ListNode partition(ListNode head, int x) { if (head == null){ return head; } ListNode dummyLeft = new ListNode(0); ListNode dummyRight = new ListNode(0); ListNode left = dummyLeft; ListNode right = dummyRight; while (head != null){ if (head.val < x){ left.next = head; left = left.next; } else { right.next = head; right = right.next; } head = head.next; } left.next = dummyRight.next; right.next = null; return dummyLeft.next; }}