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,
Given 1->4->3->2->5->2
and x = 3,
return 1->2->2->4->3->5
.
思路: 两个指针
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode partition(ListNode head, int x) { if(head == null || head.next == null) { return head; } ListNode great = head; ListNode less = head; ListNode dummy1 = new ListNode(0); dummy1.next = less; ListNode dummy2 = new ListNode(0); dummy2.next = great; while(head != null) { if(head.val < x) { less.next = head; less = less.next; } else { great.next = head; great = great.next; } head = head.next; } less.next = dummy2.next; return dummy1.next; } }