Leetcode Partition List

来源:互联网 发布:玄机科技工资 知乎 编辑:程序博客网 时间:2024/06/07 03:34

Given a linked list and a value x, partition it such that all nodes less thanx 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的节点和不小于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) {        ListNode* bighead = new ListNode(0),*big,*smallhead = new ListNode(0),*small,*curr;        curr = head;        big = bighead;        small = smallhead;        while(curr != NULL)        {            if(curr->val >= x)            {                big->next = curr;                curr = curr->next;                big = big->next;            }            else            {                small->next = curr;                curr = curr->next;                small = small->next;            }        }                small->next = bighead->next;        big->next = NULL;        return smallhead->next;    }};




原创粉丝点击