题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表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 pHead is None or pHead.next is None:
return pHead
# # 第二步因为防止第一个就是重复的节点,所以创作一个新的头节点。
bhead = ListNode(-1)
# # 因为需要两个指针,一个指着重复结点上一个结点,一个指着重复结点后一个值。
bhead.next = pHead
first_node = bhead
second_node = pHead
while second_node is not None and second_node.next is not None:
nex = second_node.next
if second_node.val == second_node.next.val:
del_val = second_node.val
while second_node and (second_node.val == del_val):
second_node = second_node.next
first_node.next = second_node
else:
first_node = first_node.next
second_node = second_node.next
return bhead.next