Leetcode面试题-0201-移除重复节点-Python实现

34次阅读

共计 709 个字符,预计需要花费 2 分钟才能阅读完成。

  • 题目要求:

  • 思路:

    • 开一个字典用来去重
    • 开一个新的链表用来返回
    • 遍历链表,如果当前值已经在字典中,直接遍历下一个,如果不在字典中,那么把这个值加到字典中后,加到新的链表中
  • 核心代码:
# 新建一个链表节点作为返回链表的头
n = ListNode(0)
# 新建字典用来去重
mydict = {}
# 把新链表的头赋给 tmp 用来插入新节点
tmp = n
# cur 用来保存遍历给定链表所到的节点
cur = head
# 遍历链表
while cur:
    # 如果这个值已经在字典中,遍历下一个节点
    if cur.val in mydict:
        cur = cur.next
    # 如果这个值不在字典中,把这个值添加到字典中,把这个节点添加到新链表中
    else:
        mydict[cur.val] = True
        tmp.next = ListNode(cur.val)
        cur = cur.next
        tmp = tmp.next
# 返回新链表头的下一个
return n.next
  • 完整代码
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def removeDuplicateNodes(self, head: ListNode) -> ListNode:
        n = ListNode(0)
        mydict = {}
        tmp = n
        cur = head
        while cur:
            if cur.val in mydict:
                cur = cur.next
            else:
                mydict[cur.val] = True
                tmp.next = ListNode(cur.val)
                cur = cur.next
                tmp = tmp.next
        return n.next

正文完
 0