📅  最后修改于: 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