题目:
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,
Given 1->4->3->2->5->2
and x = 3,
return 1->2->2->4->3->5
.
链接: http://leetcode.com/problems/partition-list/
6/4/2017
审题不清,题中只要和target一样大或者比target大的都在比target小的后面,所以不需要按照小,一样大,大这种来区分,只要按照小,不小就可以了。
注意第31行,这是为了避免出现环状输出。large.next应该是null
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { val = x; } 7 * } 8 */ 9 public class Solution { 10 public ListNode partition(ListNode head, int x) { 11 if (head == null) { 12 return head; 13 } 14 ListNode dummySmall = new ListNode(-1); 15 ListNode dummyLarge = new ListNode(-1); 16 17 ListNode cur = head; 18 ListNode small = dummySmall; 19 ListNode large = dummyLarge; 20 21 while (cur != null) { 22 if (cur.val < x) { 23 small.next = cur; 24 small = small.next; 25 } else { 26 large.next = cur; 27 large = large.next; 28 } 29 cur = cur.next; 30 } 31 large.next = null; 32 small.next = dummyLarge.next; 33 return dummySmall.next; 34 } 35 }
更多讨论:
https://discuss.leetcode.com/category/94/partition-list
原文:http://www.cnblogs.com/panini/p/6942576.html