算法提高之LeetCode刷题数据结构和算法分析

移除重复节点

2020-03-18  本文已影响0人  _阿南_

题目:

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

示例1:

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

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

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

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

题目的理解:

保存值到一个数组,然后判断每一个节点的值是否在数组中。

python实现

class Solution:
    def removeDuplicateNodes(self, head: ListNode) -> ListNode:
        values = list()
        current = head
        pre_node = None

        while current is not None:
            if current.val in values:
                if current.next is None:
                    current = None
                    if pre_node is not None:
                        pre_node.next = None
                else:
                    current.val = current.next.val
                    current.next = current.next.next
            else:
                values.append(current.val)
                
                pre_node = current
                current = current.next

        return head

提交

100%

又一个100%,可以哦

// END 春天的风景比冬天漂亮多了

上一篇下一篇

猜你喜欢

热点阅读