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
.
-
-
-
-
-
-
-
-
- public class Solution {
- public ListNode partition(ListNode head, int x) {
- ListNode first = new ListNode(0);
- ListNode second = new ListNode(0);
- ListNode res = first;
- ListNode res2 = second;
- ListNode cur = head;
- while(cur!=null){
- if(cur.val<x){
- first.next = cur;
- cur = cur.next;
- first.next.next = null;
- first = first.next;
- }else{
- second.next = cur;
- cur = cur.next;
- second.next.next = null;
- second = second.next;
- }
- }
- first.next = res2.next;
- return res.next;
- }
- }
原文链接http://blog.youkuaiyun.com/crazy__chen/article/details/46429569