82. Remove Duplicates from Sorted List II
2016-05-16 16:22
267 查看
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given
Given
【思路】创建三个指针,当前节点p,当前节点的父节点pPre, 当前节点的父节点的父节点pPrePre.
For example,
Given
1->2->3->3->4->4->5, return
1->2->5.
Given
1->1->1->2->3, return
2->3.
【思路】创建三个指针,当前节点p,当前节点的父节点pPre, 当前节点的父节点的父节点pPrePre.
/** * 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; ListNode *pPrePre = NULL; ListNode *pPre = NULL; ListNode *p = head; int key = INT_MAX; while(p) { if(key != p->val) { key = p->val; pPrePre = pPre; pPre = p; p = p->next; }else { if(pPre && pPre->val==key) { ListNode *pNext = p->next; if(pPrePre) pPrePre->next = pNext; if(head==pPre) head = pNext; delete pPre; delete p; pPre = pPrePre; p = pNext; }else { ListNode *pNext = p->next; if (pPre) pPre->next = pNext; if (head == p) head = pNext; delete p; p = pNext; } } } return head; } };
相关文章推荐
- Android 拍照或从相册取图片并裁剪
- Java常用实体类--Runtime类
- java抓取全部网页内容
- 样式重置
- JavaScript 图形绘制库
- Linux 4.6 内核发布,引入 OrangeFS 和 USB 3.1 SSP 支持
- 01背包的递归求解
- Libcurl多线程编程问题
- 将具体的秒数转换为几天几小时几分钟
- 【转载】Xcopy命令参数
- JSTL中替换\r\n
- 利用Azure Automation实现云端自动化运维(1)
- JQuery学习总结之 -- siblings()
- JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
- Android之ListView
- php面向编程入门之封装-继承-多态(第一部分)
- 什么是SDT(安防大数据技术)?
- 什么是SDT(安防大数据技术)?
- 关于使用libcurl的注意事项
- Libcurl多线程crash问题