Leetcode_Partition List
2015-02-10 16:11
274 查看
题意为将小于特定值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;
}
};
思路:设置两个链表,一个用于存放值小于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;
}
};
相关文章推荐
- LeetCode----Partition List
- leetcode---Partition List
- leetcode--Partition List
- (LeetCode 86)Partition List
- 【LeetCode】Partition List 解题报告
- leetcode: Partition List
- leetcode_86_Partition List
- 【leetcode】Partition List
- LeetCode---(86) Partition List
- 【LeetCode】Partition List
- LeetCode:Partition List
- [leetcode 86] Partition List
- 【leetcode】【单链表】【86】Partition List
- [Leetcode]#86 Partition List
- 【LeetCode练习题】Partition List
- LeetCode - Partition List
- [C语言][LeetCode][86]Partition List
- Leetcode:Partition List
- [LeetCode]Partition List
- leetcode-Partition List