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) { /** * 思路是将list按X分成两段 * 小于的连接p * 大于的连接q * 最后合并p和q即可 */ ListNode p = new ListNode(0); ListNode pHead = p; ListNode q = new ListNode(0); ListNode qHead = q; //遍历 while(head != null){ if(head.val < x){//<x成一组 p.next = head; p = p.next; }else{//>=x成一组 q.next = head; q = q.next; } head = head.next; } p.next = qHead.next; q.next = null;//斩断后面的连接 return pHead.next; } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
leetCode 86.Partition List(分区链表) 解题思路和方法
原文地址:http://blog.csdn.net/xygy8860/article/details/47053445