📜  修改链表以包含每个重复元素的最后一次出现(1)

📅  最后修改于: 2023-12-03 14:50:01.135000             🧑  作者: Mango

修改链表以包含每个重复元素的最后一次出现

在链表中,可能会存在相同的元素。本题的目的是将链表修改为仅包含每个元素的最后一次出现。

思路

要想让链表仅包含每个元素的最后一次出现,需要遍历整个链表,并记录每个元素出现的最后一个位置,然后再根据这个位置对链表进行修改。

具体来说,可以使用一个哈希表来记录每个元素最后一次出现的位置,遍历链表时对哈希表进行更新。遍历结束后,再根据哈希表对链表进行修改即可。

代码实现

下面是一份 Python 代码实现:

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def deleteDuplicates(head: ListNode) -> ListNode:
    # 记录每个元素最后一次出现的位置
    last_pos = {}
    cur = head
    while cur:
        last_pos[cur.val] = cur
        cur = cur.next

    # 根据哈希表对链表进行修改
    dummy = ListNode()
    tail = dummy
    cur = head
    while cur:
        if last_pos[cur.val] == cur:
            tail.next = cur
            tail = cur
        cur = cur.next
    tail.next = None

    return dummy.next
测试样例

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