熊二 | C++ | #牛群分隔#
牛群分隔
https://www.nowcoder.com/practice/16d9dc3de2104fcaa52679ea796e638e
题目考查的知识点
- 链表断链与重组
题目解答方法的文字解析
- 遍历一遍链表,将链表分组,小于x为一组,记为A。其余的为另一组,记为B。
- 将B组拼接到A组的后面,B组最后一个节点的next置空。
本题解析所用的编程语言
- c++
完整且正确的编程代码
class Solution { public: ListNode* cow_partition(ListNode* head, int x) { ListNode small = ListNode(-1), large = ListNode(-1); ListNode*ps = &small, *pl = &large; ListNode*phead = head; // 将链表分组,小于x为一组,记为A。其余的为另一组,记为B。 while(phead){ if(phead->val<x){ ps->next = phead; ps = ps->next; }else{ pl->next = phead; pl = pl->next; } phead = phead->next; } // 将B组拼接到A组的后面,B组最后一个节点的next置空 ps->next = large.next; pl->next = nullptr; return small.next; } };