题解 | #链表分割#
链表分割
https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {} };*/ //哨兵节点方法的好处在于可以统一进行尾插操作 class Partition { public: ListNode* partition(ListNode* pHead, int x) { ListNode * temphead = pHead; auto watcher1 = new ListNode(0); auto watcher2 = new ListNode(0); ListNode * temwat1 = watcher1; ListNode * temwat2 = watcher2; while(temphead) { if(temphead->val<x) { temwat1->next = temphead; temwat1=temwat1->next; temphead=temphead->next; } else { temwat2->next = temphead; temwat2 = temwat2->next; temphead = temphead->next; } } temwat1->next = watcher2->next; temwat2->next = nullptr; return watcher1->next; } };
两个哨兵节点尾插法轻松搞定