题目描述:
给定一个排序链表,删除所有重复的元素每个元素只留下一个。
您在真实的面试中是否遇到过这个题?
Yes
样例
给出 1->1->2->null,返回 1->2->null
给出 1->1->2->3->3->null,返回 1->2->3->null
题目分析:
给定一个排序链表,删除所有重复的元素每个元素只留下一个。
源码:
"""
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):
# write your code here
if head is None:
return None
pre = head
cur = pre
fol = pre.next
while fol.next is not None:
# 一直找到第一个与pre值不等的fol,删除中间所有重复元素
if pre.val == fol.val:
fol = fol.next
else:
pre.next = fol
pre = fol
fol = pre.next
# 检测末尾是否相等
if pre.val == fol.val:
pre.next = fol.next
else:
pre.next = fol
return cur