zoukankan      html  css  js  c++  java
  • leetCode(10):Partition List 分类: leetCode 2015-06-18 09:08 105人阅读 评论(0) 收藏

    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.

    把小于x的链表单独取出组成新的链表,然后把两个链表相连。

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* partition(ListNode* head, int x) {
            if(head==NULL || head->next==NULL)
        		return head;
        	ListNode* p=head;
        	ListNode* preP=head;
        	ListNode* newHead=NULL;
        	ListNode* newP=newHead;
        	while(p)
        	{
        		if(p->val < x)
        		{
        			ListNode* tmp=p->next;
        			if(p==head)
        			{
        				head=tmp;
        				preP=tmp;
        			}
        			if(!newHead)
        			{
        				newHead=p;
        				newHead->next=NULL;
        				newP=newHead;
        			}
        			else
        			{
        				newP->next=p;
        				newP=newP->next;
        				newP->next=NULL;
        			}
        			if(preP!=tmp)
        				preP->next=tmp;
        			p=tmp;
        		}
        		else
        		{
        			if(preP!=p)
        				preP=preP->next;
        			p=p->next;
        		}
        	}
        	if(!newHead)
        		return head;
        	newP->next=head;
        	return newHead;
        }
    };
    


  • 相关阅读:
    超级迷宫我的计划表
    不敢死队
    Let the Balloon Rise
    Hangover
    汉诺塔系列2
    Tri Tiling(递推)
    Tiling(递推,高精度)
    Color Me Less
    I Think I Need a Houseboat(圆计算)
    Kbased Numbers(递推)
  • 原文地址:https://www.cnblogs.com/zclzqbx/p/4687107.html
Copyright © 2011-2022 走看看