Leetcode_Partition List

来源:互联网 发布:ubuntu mysql my.cnf 编辑:程序博客网 时间:2024/06/14 10:15

题意为将小于特定值x的所有节点均放在不小于x的节点的前面,而且,不能改变原来节点的前后位置。

思路:设置两个链表,一个用于存放值小于x的节点,一个用于存放值不小于x的节点。

class Solution {public:    ListNode *partition(ListNode *head, int x) {if(head==nullptr)return head;        ListNode less(-1);ListNode *pless=&less;ListNode noless(-1);ListNode *pnoless=&noless;ListNode *p=head;while(p!=nullptr){if(p->val<x){/*ListNode temp(p->val);不可行,局部变量,会随着函数调用的结束而释放内存,导致在主函数中找不到原有内存空间*//*pless->next=new ListNode(p->val);结果正确,但是用了额外的内存,而且很可能会产生内存泄露*/pless->next=p;//可行pless=pless->next;}else{//ListNode temp(p->val);//pnoless->next=new ListNode(p->val);pnoless->next=p;pnoless=pnoless->next;}p=p->next;}pnoless->next=nullptr;pless->next=noless.next;return less.next;    }};


0 0
原创粉丝点击