单链表算法 - 链表分割
创始人
2025-01-10 06:37:46
0

链表分割_牛客题霸_牛客网现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的。题目来自【牛客题霸】icon-default.png?t=N7T8https://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) {         // write code here         //创建两个非空链表:小链表和大链表         ListNode* lesstHead,*lesstTail;         lesstHead = lesstTail = (ListNode*)malloc(sizeof(ListNode));          ListNode* greaterHead,*greaterTail;         greaterHead = greaterTail = (ListNode*)malloc(sizeof(ListNode));         //创建临时变量来遍历原数组         ListNode* prev = pHead;         while(prev)         {             //判断当前节点是否小于x             if(prev->val < x)             {                 //插入到小链表中                 lesstTail->next = prev;                 lesstTail = lesstTail->next;             }             else             {                 //插入到大链表中                 greaterTail->next = prev;                 greaterTail = greaterTail->next;             }             prev = prev->next;         }         //退出循环原链表遍历完成         //连接两个链表         lesstTail->next = greaterHead->next;         ListNode* ret = lesstHead->next;         free(lesstHead);         lesstHead = NULL;         free(greaterHead);         greaterHead = NULL;         return ret;     } };

提交结果:

当我们提交代码之后代码有问题,那么代码到底哪里的逻辑不合适呢?我们画图看一下。

/* struct ListNode {     int val;     struct ListNode *next;     ListNode(int x) : val(x), next(NULL) {} };*/ class Partition { public:     ListNode* partition(ListNode* pHead, int x) {         // write code here         //创建两个非空链表:小链表和大链表         ListNode* lesstHead,*lesstTail;         lesstHead = lesstTail = (ListNode*)malloc(sizeof(ListNode));          ListNode* greaterHead,*greaterTail;         greaterHead = greaterTail = (ListNode*)malloc(sizeof(ListNode));         //创建临时变量来遍历原数组         ListNode* prev = pHead;         while(prev)         {             //判断当前节点是否小于x             if(prev->val < x)             {                 //插入到小链表中                 lesstTail->next = prev;                 lesstTail = lesstTail->next;             }             else             {                 //插入到大链表中                 greaterTail->next = prev;                 greaterTail = greaterTail->next;             }             prev = prev->next;         }         //将大链表的尾节点的next指针置为NULL         greaterTail->next = NULL;         //连接两个链表         lesstTail->next = greaterHead->next;         ListNode* ret = lesstHead->next;         free(lesstHead);         lesstHead = NULL;         free(greaterHead);         greaterHead = NULL;         return ret;     } };

提交结果:

相关内容

热门资讯

第1分钟开挂!边锋辅助工具微信... 您好,边锋辅助工具微信透视这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很...
八分钟教程!光明大厅微信呢链接... 八分钟教程!光明大厅微信呢链接辅助试用,阿拉游戏中心辅助,总是是有挂(确实有挂)-哔哩哔哩1、许多玩...
7分钟外挂!sohoo竞技联盟... 7分钟外挂!sohoo竞技联盟辅助(辅助挂)确实是真的挂,科技教程(有挂教学)-哔哩哔哩1、首先打开...
第七分钟工具!财神辅助模拟器,... 第七分钟工具!财神辅助模拟器,同城游辅助工具,确实是真的挂(有挂规律)-哔哩哔哩1)同城游辅助工具辅...
8分钟开挂!微乐南昌辅助神器,... 8分钟开挂!微乐南昌辅助神器,新超凡软件辅助,揭秘教程-2026最新版本1、任何微乐南昌辅助神器ai...
第八分钟教你!河洛杠次插件(辅... 第八分钟教你!河洛杠次插件(辅助挂)总是有挂,攻略教程(有挂解惑)-哔哩哔哩1、每一步都需要思考,不...
第四分钟攻略!手机如何下载朋朋... 第四分钟攻略!手机如何下载朋朋政和辅助器,同城乐吧乐享版510k辅助,确实真的是有挂(确实有挂)-哔...
第5分钟开挂!宁夏划水辅助,四... 第5分钟开挂!宁夏划水辅助,四川途游辅助软件,技巧教程-2026最新版本1、四川途游辅助软件透视辅助...
5分钟分享!九九联盟破解版(辅... 5分钟分享!九九联盟破解版(辅助挂)都是是有挂,安装教程(有挂方法)-哔哩哔哩1、九九联盟破解版系统...
五分钟脚本!乐平包王攻略,超圣... 五分钟脚本!乐平包王攻略,超圣大厅黑科技,切实真的是有挂(有挂方法)-哔哩哔哩1、上手简单,内置详细...