#Leetcode# 86. Partition List

https://leetcode.com/problems/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.

Example:

Input: head = 1->4->3->2->5->2, x = 3
Output: 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 *dummy = new ListNode(-1);
        ListNode *cur = dummy;
        ListNode *pre = head;
        while(pre) {
            if(pre -> val < x) {
                ListNode *t = new ListNode(pre -> val);
                //t -> val = pre -> val;
                cur -> next = t;
                cur = cur -> next;
            }
            pre = pre -> next;
        }
        while(head) {
            if(head -> val >= x) {
                ListNode *c = new ListNode(head -> val);
                cur -> next = c;
                cur = cur -> next;
            }
            head = head -> next;
        }
        return dummy -> next;
    }
};

  遍历两遍链表 暴躁 Be 主

 

posted @ 2019-02-20 14:02  丧心病狂工科女  阅读(91)  评论(0编辑  收藏  举报