【Leetcode】82. Remove Duplicates from Sorted List II
2016-04-20 15:24
357 查看
问题描述:
链表又见链表。把重复的节点全都删掉。
问题分析:
我的处理方法是这样的:“ 1 1 2 3 3 4 5 5 6” 明显:将要被留下来的元素都满足一个条件 Pi - 1 != Pi != Pi+1。头节点和尾节点区别对待一下。
问题解决:
搞几个指针指来指去的 ,就ok 啦!
代码如下:
链表又见链表。把重复的节点全都删掉。
问题分析:
我的处理方法是这样的:“ 1 1 2 3 3 4 5 5 6” 明显:将要被留下来的元素都满足一个条件 Pi - 1 != Pi != Pi+1。头节点和尾节点区别对待一下。
问题解决:
搞几个指针指来指去的 ,就ok 啦!
代码如下:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* deleteDuplicates(ListNode* head) { if(head == NULL) return NULL; else if(head -> next == NULL) return head; ListNode *newHead = NULL; ListNode *curP = head, *lastP = NULL, *lastVaildNode = NULL; while(curP){ if(curP == head){//头节点 if(curP -> val != curP->next -> val){//head下一个值不同 newHead = head;//如果是第一个节点,只需要比较下一个元素 lastVaildNode = newHead; } } else if(curP -> next == NULL){//尾节点 if(curP -> val != lastP -> val){ if(lastVaildNode == NULL){//头节点为空 newHead = curP; lastVaildNode = newHead; }else{ lastVaildNode -> next = curP; lastVaildNode = curP; } } }else{ if(curP -> val != lastP -> val && curP -> val != curP -> next -> val){ if(lastVaildNode == NULL){ newHead = curP; lastVaildNode = newHead; }else lastVaildNode -> next = curP; lastVaildNode = curP; } } lastP = curP; curP = curP -> next; } if(lastVaildNode) lastVaildNode -> next = NULL; return newHead; } };
相关文章推荐
- iOS 手机号正则
- 瀑布流
- 自己写一个Web服务器(2)
- 木桶理论已死,长板理论才是你必须掌握的
- 用PL/SQL Developer(远程)连接Oracle 11g时报错“ORA-12541: TNS: 无监听程序”,解决办法
- 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- linux_find简单
- c++之强制转换之const_cast和reinterpret_cast
- iOS热更新-JSPatch实现原理+Patch现场恢复
- eclipse 启动Tomcat失败(Server Tomcat v7.0 Server at localhost fialed to start)
- Retrofit
- 二叉树
- java测试代码段执行时间
- vsftpd cmds_allowed 权限控制
- C++链接SQL代码测试
- 第四周项目3—小学生算术能力测试
- 计算机网络之面试常考
- etcd 集群概述 转
- Objective-C Runtime
- tomcat配置jndi数据源