LeetCode之Partition List

来源:互联网 发布:吉利电动车知豆d2 编辑:程序博客网 时间:2024/04/27 22:18
/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */ /*本题考查链表的遍历和尾插法(不改变相对顺序),具体方法如下: 从头开始遍历,找到小于x的结点,用尾插法加入即可。*/class Solution {public:    ListNode *partition(ListNode *head, int x) {        if(!head) return head;        ListNode newHead(-1);        ListNode *mark = &newHead;//小于x的结点插到mark结点后面        mark->next = head;        while(mark->next && mark->next->val < x) mark = mark->next;        ListNode *pre = mark;        if(!pre->next) return head;        ListNode *cur = pre->next;        while(cur){            if(cur->val < x){                ListNode *tmp = cur;                pre->next = cur->next;                cur = cur->next;                tmp->next = mark->next;                mark->next = tmp;                mark = mark->next;            }            else{                pre = pre->next;                cur = cur->next;            }        }        return newHead.next;    }};


                                             
0 0
原创粉丝点击