删除链表中重复的结点 — C++实现
发布日期:2021-10-02 06:27:37
浏览次数:2
分类:技术文章
本文共 1145 字,大约阅读时间需要 3 分钟。
题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
解题思路
遍历链表,如果发现当前结点的值和下一结点的值相同,即为重复,则将重复的值记录下来,并从该位置开始选择删除,直到遇到不重复的值为止
需要注意两点:
- 上一不重复的结点(应记录下来)的
next
指针应该指向下一不重复的结点 - 如果头结点被删除了,需要更换头结点
C++代码实现
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution { public: ListNode* deleteDuplication(ListNode* pHead){ if(!pHead)return NULL; ListNode *ptr; ptr=pHead; bool can=false; ListNode *pre=NULL; while(ptr!=NULL){ if(ptr->next&&ptr->val==ptr->next->val)can=true; if(can){ ListNode *de=ptr; int val=de->val; while(de!=NULL&&val==de->val){ ptr=ptr->next; delete de; de=ptr; } if(pre==NULL)pHead=ptr; else pre->next=ptr; can=false; }else{ pre=ptr; ptr=ptr->next; } } return pHead; }};
运行时间:3ms占用内存:376k
转载地址:https://blog.csdn.net/Jeaten/article/details/108130480 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月09日 11时44分51秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Prepare the data
2019-04-26
scipy.misc.imresize改变图像的大小
2019-04-26
np.all的实例应用
2019-04-26
custom_transforms
2019-04-26
scipy.misc.imread函数,读取图片
2019-04-26
pytorch 训练数据以及测试 全部代码(1)
2019-04-26
pytorch 训练数据以及测试 全部代码(2)
2019-04-26
pytorch 训练数据以及测试 全部代码(3)
2019-04-26
Linux中ping命令
2019-04-26
numpy与Image互转以及它们的size不同,还有关于plt
2019-04-26
pycharm的安装卸载,激活与远程调试
2019-04-26
CGAN,条件GAN
2019-04-26
改进算法1
2019-04-26