删除链表中重复的结点
来源:互联网 发布:openvpn如何改免流端口 编辑:程序博客网 时间:2024/05/06 11:40
题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* deleteDuplication(ListNode* pHead) { if(!pHead||!pHead->next) return pHead; ListNode *first=pHead,*last=pHead,*tmp=NULL,*cur=NULL; while(first&&pHead->val==first->val){ while(pHead->val==first->val){ first=first->next; if(!first) break; } if(first==pHead->next) break; else{ while(pHead!=first){ tmp=pHead; pHead=pHead->next; delete tmp; } } } first=pHead; last=pHead->next; while(first){ while(first->next&&last->next&&first->next->val==last->next->val){ last=last->next; } if(first->next!=last){ cur=first; tmp=first->next; first->next=last->next; last->next=NULL; first=tmp; while(first){ tmp=first; first=first->next; delete tmp; } first=cur; last=cur->next; }else{ first=first->next; last=last->next; } } return pHead; }};
0 0
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 删除链表中重复的结点
- 导出excel时提示没有注册类
- chromium 39以后版本的分支和稳定版本的编译安装(windows版本)
- 3.9 带阈值分割的柱形图
- ssh公私钥登录方式设置
- C++获取控制台输出
- 删除链表中重复的结点
- 工具小技巧
- 2015-6-29学习
- CSS浏览器兼容问题
- 关于distinct和group by的效率问题
- [HNOI2008]玩具装箱toy(dp+斜率优化)
- Hibernate get和load的区别
- 2440GPIO口在linux中的定义
- 字符串转换