
详细思路
链表题原链表和每一条拼接成的链表都要有哑结点来解决头部问题,都要思考尾部如何处理,都要画图
 
first是已经且小于
right是已经且大于等于
cur是需要,遇到需要,如果小于,接到first,firstcur++
如果大于等于,接到right,rightcur++
画图
class Solution { public: ListNode* partition(ListNode* head, int x) { if(!head)return nullptr; ListNode*dummyL=new ListNode(0,head); ListNode*dummyR=new ListNode(0,head); ListNode*L=dummyL,*R=dummyR,*cur=head; while(cur){ if(cur->val<x){ L->next=cur; L=cur; cur=cur->next; } else if(cur->val>=x){ R->next=cur; R=cur; cur=cur->next; } } R->next=nullptr; L->next=dummyR->next; return dummyL->next; } };
踩过的坑
链表题,每一条原链表和新拼接成的链表都要有哑结点来解决头部问题,都要处理好尾部问题
                    
                
                
            
        
浙公网安备 33010602011771号