码迷,mamicode.com
首页 > 其他好文 > 详细

Partition List

时间:2019-05-23 21:17:24      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:input   ptr   链表   node   relative   linked   before   nullptr   example   

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.

Example:

Input: head = 1->4->3->2->5->2, x = 3
Output: 1->2->2->4->3->5

code

  把比target值小的结点组成一个新的链表,把旧的链表链在新的链表尾部

struct ListNode
{
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};

class Solution
{
public:
    ListNode* partition(ListNode* head, int x)
    {
        if(!head)
            return head;

        ListNode curHead(-1);
        curHead.next=head;
        ListNode *cur=&curHead;

        ListNode newHead(-1);
        ListNode *cur1=&newHead;
        while(cur->next)
        {
            if(cur->next->val<x)
            {
                cur1->next=cur->next;
                cur1=cur1->next;
                cur->next=cur->next->next;

                cur1->next=nullptr;//new list break with old list
            }
            else
                cur=cur->next;
        }

        cur1->next=curHead.next;
        return newHead.next;
    }
};

 

Partition List

标签:input   ptr   链表   node   relative   linked   before   nullptr   example   

原文地址:https://www.cnblogs.com/tianzeng/p/10914392.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!