LeetCode(86) Partition List

来源:互联网 发布:淘宝的吕官方旗舰店 编辑:程序博客网 时间:2024/05/07 20:36

示算法图
代码如下:

/** * 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 *newHead = new ListNode(0);        newHead->next = head;        ListNode *p1;        p1 = newHead;        while(p1->next != NULL)            p1 = p1->next;        ListNode *plusHead = new ListNode(0);        p1->next = plusHead;        ListNode *p3, *p4, *p5;        p3 = newHead;        p4 = newHead->next;        p5 = plusHead;        while(p4 != plusHead) {            if(p4->val >= x) {                p3->next = p4->next;                p5->next = p4;                p4->next = NULL;                p4 = p3->next;                p5 = p5->next;            }else {                p4 = p4->next;                p3 = p3->next;            }        }        p1 = newHead;        while(p1->next != plusHead)            p1 = p1->next;        p1->next = plusHead->next;        return newHead->next;    }};
0 0
原创粉丝点击