Remove Duplicates from Sorted List II
2015-08-10 09:19
381 查看
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 2->3.
思路:这题算法不难,就是要注意头重复和尾重复的情况
For example,
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 2->3.
思路:这题算法不难,就是要注意头重复和尾重复的情况
class Solution { public: ListNode* deleteDuplicates(ListNode* head) { if(head==NULL)//头为空 return NULL; int count=0; ListNode *p = head; ListNode *q = p->next; while(q){ //开头重复 if(p->val==q->val){ while(q->next && q->val==q->next->val) q = q->next; if(q->next == NULL)//所有的都重复 return NULL; else{ p=q->next; head=p; q=p->next; } } //头不重复 else{ while(q->next && q->val==q->next->val){ q = q->next; count ++; } if(q->next == NULL){//结束了 if(!count)//尾不重复 return head; else{//尾重复 //释放 ListNode *t = p->next; while(t==q){ ListNode *tmp = t; t = t->next; delete tmp; } p->next=NULL; return head; } } else{ if(count){//存在重复 //释放 ListNode *t = p->next; p->next=q->next; while(t==q){ ListNode *tmp = t; t = t->next; delete tmp; } q = p->next; count = 0; } else{//不存在重复 if(p==head){ p = q; q = p->next; head->next=p; } else{ p = q; q = p->next; } } } } } return head; } };
相关文章推荐
- 计蒜客 难题题库 031 无脑博士的试管们
- 计蒜客 难题题库 030 合法分数的组合
- CSS3实现的一批hover特效
- wpf 代码设置图片路径(后台和xamll)
- 如何用PHPExcel读取超大excel文件
- 移动鼠标显示坐标及退出
- nginx安装
- 线段树之HDU1166 敌兵布阵
- 7大未来Web设计趋势
- 51nod 1413:权势二进制
- swift - The Builder Pattern
- 进程间通信-信号量
- js 浮动窗效果
- jQuery 判断所有图片加载完成
- 51nod 1413:权势二进制
- js利用clipboardData在网页中实现截屏粘贴的功能
- 流程设计器
- 将网页中的html代码的table保存成word文件
- 20年资深程序员编程经验分享
- Web.xml配置详解