单链表算法 - 链表分割
创始人
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;     } };

提交结果:

相关内容

热门资讯

Postman、Apifox、... Postman、Apifox、Apipost都是流行的API接口管理工具,它们各自具有...
线性代数:多个随机变量相加的方... 对于多个随机变量相加的方差,我们可以按照独立和不独立的情况进行讨论。1. 独立情况下的...
技能 | postman接口测... 哈喽小伙伴们大家好!今天来给大家分享一款轻量级,高效好用的接口测试工具-postman.Postma...
教学盘点!微扑克专用辅助软件(... 您好,微扑克这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在这款游戏中...
一分钟揭秘!(微扑克)外挂辅助... 一分钟揭秘!(微扑克)外挂辅助器插件挂!(透视)详细教程(2025已更新)(哔哩哔哩)是一款可以让一...
使用C#创建服务端Web AP... 前言C# Web API 是一种基于 .NET 平台(包括但不限于.NET Frame...
JavaEE:@Request... 目录        1、@RequestMapping 介绍        2、@R...
第2方教程(GG扑克)软件透明... 您好,GG扑克这款游戏可以开挂的,确实是有挂的,需要了解加微【439369440】很多玩家在这款游戏...
教程攻略!wpk插件挂(WPk... 教程攻略!wpk插件挂(WPk)透视辅助!(辅助透视)详细教程(2025已更新)(哔哩哔哩);最新版...
深入解析HTTPS与HTTP 在当今数字化时代,网络安全已成为社会各界关注的焦点。随着互联网技术的飞速发展ÿ...