Leetcode 83:删除排序链表中的重复元素(最详细解决方案!!!)

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

示例 1:

输入: 1->1->2
输出: 1->2

示例 2:

输入: 1->1->2->3->3
输出: 1->2->3

解题思路

由于这个问题没有给出限定条件,所以我们必须要在代码中排除一些可能。

if head == None or head.next == None:
    return head

我们遍历链表,如果precurval相同的话pre.next = cur.next,然后cur = cur.next

pre cur
 0   0   1   1

接着代码就很Easy了!!!

class Solution:
    def deleteDuplicates(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        if head == None or head.next == None:
            return head

        pre = None
        cur = head
        while cur != None:
            pre = cur
            cur = cur.next
            while cur != None and cur.val == pre.val:
                pre.next = cur.next
                cur = cur.next

        return head

我将该问题的其他语言版本添加到了我的GitHub Leetcode

如有问题,希望大家指出!!!

猜你喜欢

转载自blog.csdn.net/qq_17550379/article/details/80654239