您的位置:首页 > 其它

LeetCode Partition List(链表分段)

2016-06-13 15:21 239 查看
题意:给出一个单链表,有参数的数x。将比x小的数排在比x大的数据后面

思路:类似于快速排序的分段处理。为了简单操作,在单链表前加个头结点。注意,在处理时,如果当前处理结点与被替换结点为同一结点结,两个都下移,否则会出现环     

代码如下:

 class Solution
{
public ListNode partition(ListNode head, int x)
{
if (null == head || null == head.next) return head;

ListNode dummy = new ListNode(0);
dummy.next = head;

ListNode p = dummy, cur = dummy;

while (cur != null && cur.next != null)
{
if (cur.next.val < x)
{
if (cur == p)
{
p = p.next;
cur = cur.next;
continue;
}

ListNode tmp = cur.next;
ListNode next = p.next;
cur.next = cur.next.next;
p.next = tmp;
tmp.next = next;
p = p.next;
continue;
}

cur = cur.next;
}

return dummy.next;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: