给定一个排序的链表,删除所有具有重复数字的节点,从原始列表中只留下不同的数字。
来源:互联网 发布:淘宝支付宝登陆界面 编辑:程序博客网 时间:2024/06/10 05:40
思路1:
新建一个头节点,值为头节点值-1.如果当前节点有重复,就删除节点指直到不重复的,将当前节点的前一个节点的指针指向不重复的,保持链表不断。
ListNode *deleteDuplicates(ListNode *head) { if(head==NULL||head->next==NULL) return head; ListNode* p=head; int x=p->val-1; ListNode* root=new ListNode(x); root->next=head; ListNode* pre=root; while(p&&p->next){ if(p->val!=p->next->val){ pre=p; }else{ while(p->next&&p->val==p->next->val) p=p->next; pre->next=p->next; } p=p->next; } return root->next; }思路二:
ListNode *deleteDuplicates(ListNode *head) { if(head==NULL||head->next==NULL) return head; ListNode* p; int x=p->val-1; ListNode* root=new ListNode(x); root->next=head; ListNode* pre=root; while(pre->next&&pre->next->next){ //从头节点遍历, if(pre->next->val==pre->next->next->val){ p=pre->next->next->next; //删除后面重复的所有节点 while(p&&p->val==pre->next->val) p=p->next; pre->next=p; //保证链表不断 }else{ pre=pre->next; } } return root->next; }
阅读全文
0 0
- 给定一个排序的链表,删除所有具有重复数字的节点,从原始列表中只留下不同的数字。
- 给定一个排序的链接列表,删除所有重复项,使每个元素只显示一次。
- 删除数组中所有给定的数字。
- 删除数组中重复出现的元素,只留下一个,排序后输出
- Java实现从一个数字中删除给定个数的数得到一个最大整数
- 删除排序链表的所有重复节点
- 定义一个字符串类DelSameStr,从左到右对字符串中每个字符删除其后所有相同的字符,只留下第一次出现的那一个。例如,若字符串为”cocoon”,删除重复出现的字符后,其结果是字符串”con”
- 给定不同数字的集合,返回所有可能的排列。
- 给定一个字符串只含有数字,判定这个字符串能表达的所有IP地址
- //数组中只重复一次的数字
- 给定一个只包含小写字母的字符串,删除重复的字母,每个字母只出现一次。在所有结果中,输出字典顺序最小的。
- 给定一个包含从0,1,2,...,n中取出的n个不同数字的数组,找到数组中缺少的数字。
- 排序后的数组删除重复数字
- Lintcode删除排序数组的重复数字
- 排序后的数组删除重复数字
- python实现给定一个列表计数指定数字出现的所有次数
- 把具有相同字段的纪录删除,只留下一条
- 删除列表中重复的节点
- CF876B 数学
- 设置属性框架(结合定时器)
- 二叉树的基本概念
- 运维之系统服务篇------ RAID磁盘阵列 、 进程管理 、 日志管理 、 systemctl控制
- 201710211100->AsyncDownloadTexture
- 给定一个排序的链表,删除所有具有重复数字的节点,从原始列表中只留下不同的数字。
- C++学习笔记——C语言中的fgets()函数
- codeforces 876B Divisiblity of Differences
- 干货 | 【深度学习】 在 【推荐算法】 上的应用研究进展
- Rhyme/ Java IO流关闭工具类
- Deep learning
- codeforces 876C Classroom Watch
- 存储过程学习
- 在分类中如何处理训练集中不平衡问题