题目描述
- 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
- 注意:删除重复的结点,也不保留原来的结点
解题思路
用指针cur、pre分边保存当前结点和当前结点的前一个结点。
通过cur遍历整个链表,cur顺着这个节点向后搜索,直到遇到有重复的数字,而pre总是指向cur的前一个结点
创建一个头节点相连,是考虑了第一个值也是重复项
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def deleteDuplication(self, pHead):
# write code here
newHead = ListNode('0')
newHead.next = pHead
pre, cur = None, newHead
while cur:
pre = cur
cur = cur.next
while cur and cur.next and cur.next.val == cur.val:
val = cur.val
while cur and cur.val == val:
cur = cur.next
pre.next = cur
return newHead.next