删除排序链表中的重复数字 II
来源:互联网 发布:mac玩魔兽世界怎么样 编辑:程序博客网 时间:2024/06/05 00:53
给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素。
样例
给出1->2->3->3->4->4->5->null,返回1->2->5->null
给出1->1->1->2->3->null,返回 2->3->null
/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) { * this->val = val; * this->next = NULL; * } * } */class Solution{public: /** * @param head: The first node of linked list. * @return: head node */ ListNode * deleteDuplicates(ListNode *head) { // write your code here if (head == NULL) { return NULL; } ListNode *p = head; bool dupFound = false; if (p->next != NULL && p->next->val == p->val) { while (p->next != NULL && p->next->val == p->val) { ListNode *temp = p->next->next; delete p->next; p->next = temp; } ListNode *next = p->next; delete p; return deleteDuplicates(next); } ListNode *result = head; ListNode *q = head; p = q->next; while (p != NULL) { if (p->next != NULL) { if (p->next->val == p->val) { dupFound = true; ListNode *temp = p->next->next; delete p->next; p->next = temp; } else { if (dupFound) { ListNode *temp = p->next; delete p; q->next = temp; p = q->next; dupFound = false; } else { q = p; p = p->next; } } } else { if (dupFound) { q->next = NULL; delete p; dupFound = false; } p = NULL; } } return result; }};
0 0
- LintCode-删除排序链表中的重复数字 II
- 删除排序链表中的重复数字 II
- 题目:删除排序链表中的重复数字 II
- lintcode-删除排序链表中的重复数字II-113
- 删除排序链表中的重复数字 II
- 删除排序链表中的重复数字 II
- 删除排序链表中的重复数字 II
- lintcode-删除排序链表中的重复数字 II
- LintCode(M)删除排序链表中的重复数字 II
- lintcode,删除排序链表中的重复数字 II
- LintCode 删除排序链表中的重复数字 II
- 删除排序链表中的重复数字 II -LintCode
- 删除排序链表中的重复数字 II -LintCode
- [LintCode]113.删除排序链表中的重复数字 II
- LintCode删除排序链表中的重复数字 II
- 删除排序数组中的重复数字 II
- 删除排序数组中的重复数字 II
- 删除排序数组中的重复数字 II
- Java迭代器深入理解及使用
- android:使用SurfaceView游戏开发简单屏幕适配方法
- 破除java神话之三:原子操作都是线程安全的
- Hibernate的generator属性的意义
- android dp 和px的区别
- 删除排序链表中的重复数字 II
- 简单介绍redis以及ubuntu和windows下如何安装redis和配置文件详解
- 常用传感器协议8:奥松温湿度传感器
- Hadoop生态概览
- 实现iframe在mobile上滚动
- 导航栏互相加载的栈操作问题
- android学习笔记
- CPP线程:生产者与消费者的问题
- 每日五题(java基础)