专栏首页freesan44LeetCode 面试题 02.01. 移除重复节点

LeetCode 面试题 02.01. 移除重复节点

题目

编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。

示例1:

 输入:[1, 2, 3, 3, 2, 1]
 输出:[1, 2, 3]
示例2:

 输入:[1, 1, 1, 1, 2]
 输出:[1, 2]

提示:

链表长度在[0, 20000]范围内。 链表元素在[0, 20000]范围内。 进阶:

如果不得使用临时缓冲区,该怎么解决?

解题思路

class Solution:
    def removeDuplicateNodes(self, head: ListNode) -> ListNode:
        # #设置字典缓冲区
        # numDic = {}
        # headTemp = head
        # pre = head
        # while headTemp != None:
        #     # print(headTemp.val)
        #     dicKey = str(headTemp.val)
        #     if dicKey not in numDic:#如果没值
        #         numDic[dicKey] = 1
        #         pre = headTemp
        #         headTemp = headTemp.next
        #     else:#如果有值
        #         # print(numDic)
        #         if pre.next.next is not None:#删除元素
        #             pre.next = pre.next.next
        #             headTemp = pre.next
        #         else:
        #             pre.next = None
        #             headTemp = None
        # return head
        #不设置缓冲区 python会超时
        left = head
        while left != None:
            right = left.next
            rightPre = left
            while right != None:
                if right.val == left.val:#如果等值就删除
                    if rightPre.next.next is not None:
                        rightPre.next = rightPre.next.next
                        right = rightPre.next
                    else:#尽头
                        rightPre.next = None
                        right = None
                        break
                else:#r指针向前遍历
                    right = right.next
                    rightPre = rightPre.next
            left = left.next#左指针遍历
        return head

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • LeetCode 2. 两数相加

    给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

    freesan44
  • LeetCode 234. 回文链表

    freesan44
  • LeetCode 21. 合并两个有序链表

    将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

    freesan44
  • [PHP] 算法-复制复杂链表的PHP实现

    陶士涵
  • 吃透洋葱模型

    作者:掘金@苏里 https://juejin.im/post/6844904025767280648

    zz_jesse
  • leetcode:83 删除排序链表中的重复元素

    问题? 如果next没有值的话,会报错的。 因为要相等啊,比较啊,有值才能比较是吧。 那为什么p.next=p.next.next;如果p.next.ne...

    用户7873631
  • c/c++补完计划(七): 哨兵节点

    sean_yang
  • 模式匹配KMP算法

    匹配到j=5时失效了,BF算法里我们会使i=1,j=0,再看s的第i位开始能不能匹配,而KMP算法接下来就去比较T[2](next[5]=2)和S[5]

    饶文津
  • 【玩转腾讯云】python next函数

    python 3.x内置函数next可以从迭代器中检索下一个元素或者数据,可以用于迭代器遍历,使用的时候注意会触发 StopIteration 异常!

    猿说编程[Python和C]
  • leetcode: 206. Reverse Linked List

    JNingWei

扫码关注云+社区

领取腾讯云代金券