luoguP1040 [NOIP2003]加分二叉樹
阿新 • • 發佈:2020-11-05
要求:給定一個連結串列和一個特定值 x,對連結串列進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。
你應當保留兩個分割槽中每個節點的初始相對位置。
[https://leetcode-cn.com/problems/partition-list/](LeetCode 86)
//方法: 利用建立兩個頭指標
class Solution {
public:
ListNode* partition(ListNode* head, int x) {
if(head==NULL)
return NULL;
ListNode* less_head=new ListNode(0);//less_head->val=0;less_head->next=NULL; ListNode* more_head=new ListNode(0); ListNode* pLessTail=less_head; ListNode* pMoreTail=more_head; while(head){ if(head->val<x){ pLessTail->next=head;//if val<x; link Less_X; pLessTail=head;//後移 } else if(head->val>=x){ pMoreTail->next=head;//if val>=x; link More_X; pMoreTail=head;//後移 } head=head->next; } pMoreTail->next=NULL;//尾置空 pLessTail->next=more_head->next;//Less_X link More_X return less_head->next;//less頭節點為空 }
};