• 【LeetCode】Partition List


    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.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode *partition(ListNode *head, int x) {
            ListNode *smallhead = NULL;
    	ListNode *bighead = NULL;
    	ListNode *tail_small = NULL;
    	ListNode *tail_big = NULL;
    	ListNode *cur = head;
    	if (head == NULL || head->next == NULL)
    	{
    		return head;
    	}
    	while(cur != NULL)
    	{
    		ListNode *tmp_next = cur->next;
    		if (cur->val < x)
    		{
    			if (smallhead == NULL)
    			{
    				smallhead = tail_small = cur;
    			}
    			else {
    				tail_small->next = cur;
    				tail_small = cur;
    			}
    		}
    		else{
    			if (bighead == NULL)
    			{
    				bighead = tail_big = cur;
    			}
    			else{
    				tail_big->next = cur;
    				tail_big = cur;
    			}
    		}
    		cur = tmp_next;
    	}
    	if (tail_small == NULL)
    	{
    		tail_big->next = NULL;
    		return bighead;
    	}
    	if (tail_big == NULL)
    	{
    		tail_small->next = NULL;
    		return smallhead;
    	}
    	tail_small->next = bighead;
    	tail_big->next = NULL;
    	return smallhead;
        }
    };


  • 相关阅读:
    Android Developer API Guides
    Ubuntu 12.04 下安装 VirtualBox
    C++的异常处理
    JZOJ 4246. 【五校联考6day2】san
    JZOJ 4245. 【五校联考6day2】er
    JZOJ 4244. 【五校联考6day2】yi
    JZOJ 4228. 【五校联考3day2】C
    JZOJ 4227. 【五校联考3day2】B
    JZOJ 4226. 【五校联考3day2】A
    JZOJ 4235. 序列
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5166633.html
Copyright © 2020-2023  润新知