【LEETCODE】82- Remove Duplicates from Sorted List II [Python]

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

For example,

Given 1->2->3->3->4->4->5, return 1->2->5.

Given 1->1->1->2->3, return 2->3.


题意:

只要是重复出现的数字,就都删掉,一个不留


思路:

use three pointers: pre, cur, post 

post moves forward to check whether its value is the same with cur.val

if not, these three pointers moves forward together

if yes, post itself moves forward until its value is not same with cur.val

at this time, cur is at the start of the duplicate value, and post is after the end

then let pre.next=post


参考:

http://www.jianshu.com/p/bff0b0d48b72


Python:

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def deleteDuplicates(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        
        if head is None or head.next is None:
            return head
        
        dummy=ListNode(0)
        dummy.next=head
        pre=dummy
        cur=head
        post=head.next
        
        while post:
            while post and post.val != cur.val:                 # 没有重复的时候
                post=post.next
                cur=cur.next
                pre=pre.next
            while post and post.val==cur.val:                   # 有重复的时候
                post=post.next
            if post != cur.next:                                # 只有在有重复的时候这么做
                pre.next=post
                cur=post
                if post is not None:
                    post=post.next
            
        return dummy.next
                
                
                


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值