删除排序链表中的重复元素
2016-05-02 11:00
357 查看
题目描述:给定一个排序链表,删除所有重复的元素每个元素只留下一个。
样例:给出 1->1->2->null,返回 1->2->null;给出 1->1->2->3->3->null,返回 1->2->3->null
遍历整个链表,同时存储遍历到的节点值,如果某节点的值在存储中找到了相同的值,则删除。
我在这使用了Python中的集合类型set来存储已经遍历到的节点的值(因为set能帮助我直接去重,不会占用太大空间)。
至于删除节点的部分,之前已经探讨过怎么做了(详见:点击打开链接)
给出代码:
"""
Definition of ListNode
class ListNode(object):
def __init__(self, val, next=None):
self.val = val
self.next = next
"""
class Solution:
"""
@param head: A ListNode
@return: A ListNode
"""
def deleteDuplicates(self, head):
if head is None:
return head
record = set([head.val])
cur, pre = head.next, head
while cur:
if cur.val in record:
pre.next = cur.next
cur = cur.next
else:
record.add(cur.val)
pre = pre.next
cur = cur.next
return head
# write your code here
样例:给出 1->1->2->null,返回 1->2->null;给出 1->1->2->3->3->null,返回 1->2->3->null
遍历整个链表,同时存储遍历到的节点值,如果某节点的值在存储中找到了相同的值,则删除。
我在这使用了Python中的集合类型set来存储已经遍历到的节点的值(因为set能帮助我直接去重,不会占用太大空间)。
至于删除节点的部分,之前已经探讨过怎么做了(详见:点击打开链接)
给出代码:
"""
Definition of ListNode
class ListNode(object):
def __init__(self, val, next=None):
self.val = val
self.next = next
"""
class Solution:
"""
@param head: A ListNode
@return: A ListNode
"""
def deleteDuplicates(self, head):
if head is None:
return head
record = set([head.val])
cur, pre = head.next, head
while cur:
if cur.val in record:
pre.next = cur.next
cur = cur.next
else:
record.add(cur.val)
pre = pre.next
cur = cur.next
return head
# write your code here
相关文章推荐
- [C/C++]反转链表
- C#实现基于链表的内存记事本实例
- C#模拟链表数据结构的实例解析
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C++利用静态成员或类模板构建链表的方法讲解
- C++实现简单的学生管理系统
- Linux内核链表实现过程
- C++链表倒序实现方法
- C#通过链表实现队列的方法
- C#实现的简单链表类实例
- 找出链表倒数第n个节点元素的二个方法
- Java数据结构之简单链表的定义与实现方法示例
- Java模拟有序链表数据结构的示例
- C语言单循环链表的表示与实现实例详解
- C++实现的链表类实例
- PHP小教程之实现链表
- PHP中模拟链表和链表的基本操作示例
- C语言双向链表的表示与实现实例详解
- js链表操作(实例讲解)
- C语言实现输出链表中倒数第k个节点