题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。
例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def deleteDuplication(self, pHead):
# write code here
if not pHead :
return None
result = ListNode(0)
res = result
temp = pHead
while temp and temp.next:
if temp.val==temp.next.val:
while temp.next and temp.val==temp.next.val:
temp = temp.next
else:
res.next = temp
res = res.next
temp = temp.next
res.next = temp
return result.next
递归
参考:牛客6935185号 提交的代码
链接:https://www.nowcoder.com/profile/6935185/codeBookDetail?submissionId=12608448
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def deleteDuplication(self, pHead):
# write code here
if not pHead or not pHead.next:
return pHead
head = pHead.next
if head.val != pHead.val:
pHead.next = self.deleteDuplication(pHead.next)
else:
while pHead.val == head.val and head.next :
head = head.next
if pHead.val != head.val:
pHead = self.deleteDuplication(head)
else:
return None
return pHead