详细思路

链表题原链表和每一条拼接成的链表都要有哑结点来解决头部问题,都要思考尾部如何处理,都要画图
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;
    }
};
踩过的坑
链表题,每一条原链表和新拼接成的链表都要有哑结点来解决头部问题,都要处理好尾部问题
posted on 2021-07-31 12:32  offer快到碗里来~  阅读(35)  评论(0)    收藏  举报