您的位置:首页 > 编程语言 > Python开发

leetcode--删除排序链表中的重复元素--python

2019-04-15 15:46 781 查看

文章目录

  • 解题代码
  • 题目

    题目详情

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

    示例

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

    解题代码

    思路

    1. 我们需要删除的是一个排序的链表里重复的值
    2. 那么就需要两个指针来进行遍历,那么遍历完成的一个条件就是p1.next == None
    3. 前面的两个指针可以简化为一个指针,前后指针嘛,前一个是p1,那么后一个就是p1.next。
    4. 需要注意的点是需要判断删除节点为最后一个节点的话,要注意删除后,指针最后指向的是None

    代码

    class Solution:
    def deleteDuplicates(self,head):
    p1 = head
    if p1 is None:return head
    while p1.next is not None:
    if p1.val == p1.next.val:
    if p1.next is None:    #这里就是要注意的点,要删除的节点为最后一个节点
    p1.next = None
    else:
    p1.next = p1.next.next
    else:
    p1 = p1.next
    return head

    运行结果

    最佳方案

    用时为44ms的一个最佳方案,给大家参考参考

    class Solution:
    def deleteDuplicates(self, head: 'ListNode') -> 'ListNode':
    if head == None:
    return head
    h = head
    tp = head
    tmp = head.val
    head = head.next
    while head != None:
    if tmp == head.val:
    head = head.next
    tp.next = head
    else:
    tmp = head.val
    head = head.next
    tp = tp.next
    return h
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: