partition-list

来源:互联网 发布:java保留小数点后一位 编辑:程序博客网 时间:2024/05/16 04:37

给定一个链表和一个值,使小于这个值的节点在前,大于或等于的在后。
Given1->4->3->2->5->2and x = 3,
return1->2->2->4->3->5.

思路:分成两部分,然后再连接起来,连接的时候记得后半部分的最后一个节点后面要置NULL

代码:

/** * 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) {        if(head==NULL || head->next==NULL)            return head;        ListNode *preleft = new ListNode(-1);        ListNode *preright = new ListNode(-1);        ListNode *left = preleft;        ListNode *right = preright;        while(head!=NULL){            if(head->val < x){                left->next = head;                left = left->next;            }            else{                right->next = head;                right = right->next;            }            head = head->next;        }        right->next = NULL;  //开始这句话忘了加,出错了        left->next = preright->next;        return preleft->next;    }};
原创粉丝点击