lintcode-删除排序链表中的重复数字II-113
2015-09-17 08:54
363 查看
给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素。
样例
给出1->2->3->3->4->4->5->null,返回1->2->5->null
给出1->1->1->2->3->null,返回 2->3->null
样例
给出1->2->3->3->4->4->5->null,返回1->2->5->null
给出1->1->1->2->3->null,返回 2->3->null
<span style="font-size:14px;">/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) { * this->val = val; * this->next = NULL; * } * } */ class Solution{ public: map<int,int> check; //检验节点是否满足删除条件 ListNode * deleteDuplicates(ListNode *head) { if(!head) return NULL; ListNode *p=head; ListNode *q=NULL; //q负责指向p的前一个节点 ListNode *ret=head; while(p){ ++check[p->val]; //计数 p=p->next; } p=head; while(p){ if(check[p->val]>1){ //节点数大于一应该删除 ListNode *tmp; tmp=p; //负责指向将要被删除的节点 p=p->next; if(NULL==q){ //该节点是链表的头结点 ret=p; }else{ //非头结点 q->next=p; } free(tmp); }else{ q=p; p=p->next; } } return ret; } };</span>
相关文章推荐
- UI中对于选择主题的处理方法
- 正则表达式之group
- MFC去掉窗口右上方最大化最小化关闭按钮
- 情绪一点点
- LeetCode----Triangle
- 24 Ultimate Data Scientists To Follow in the World Today
- 对时间进行排序
- Word使用样式技巧:解决创建目录后出现的打印错误---超链接错误
- Scala中隐式转换内幕操作规则揭秘、最佳实践及其在Spark中的应用源码解析之Scala学习笔记-55
- 【Android应用开发】分享一个录制 Android 屏幕 gif 格式的小技巧
- Xcode启动缓慢+内存快速减少
- Session的生命周期
- LeetCode-Single Number
- 【Android应用开发】分享一个录制 Android 屏幕 gif 格式的小技巧
- JSP四大作用域
- 各种编程语言的深度学习库
- spring+springMVC集成(annotation方式)
- canvas绘制指针时钟
- IOS定位服务的应用
- JAVA正则表达式校验密码实战实例