leetcood学习笔记-82-删除排序链表中的重复元素二

题目描述:

方法一:

class Solution(object):
    def deleteDuplicates(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        p = ListNode(0)     # 创建新链表头
        p.next = head
        head = p            # 新的链表头
        
        while p.next:       
            left = p.next   # 左指针,p为当前节点的上一个节点
            right = left    # 右指针
            # 若值相同,则移动右指针,直到右指针下一个节点的值不同为止
            while right.next and (right.next.val == left.val):  
                right = right.next
            if right == left:       # 左右指针相同,则表示不重复
                p = p.next
            else:                   # 左右指针不同,则删除左节点到右节点之间的所有节点
                p.next = right.next
        
        # 返回新链表头
        return head.next

 

posted @ 2019-05-07 18:16  oldby  阅读(163)  评论(0编辑  收藏  举报