用python写一个代码 设计一种方法从无序链表中删除重复项,保留第一次出现的节点
时间: 2024-09-19 13:07:28 浏览: 24
在Python中,我们可以使用字典数据结构来辅助解决这个问题,因为字典有一个特性,即键(key)的值只会有唯一的一个。所以我们可以遍历链表,将每个节点的值作为键存储到字典中,如果遇到相同的值,则跳过这个重复的节点。以下是实现这种方法的一种简单代码:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def delete_duplicates(head):
if not head or not head.next:
return head
seen = {} # 字典用于记录已见值
current = head
while current:
if current.val in seen:
# 如果当前值已经在字典里,说明是重复项,移除它
current.next = current.next.next
else:
# 如果当前值不在字典里,添加到字典并继续遍历
seen[current.val] = True
current = current.next
return head
```
在这个代码中,我们首先检查链表是否为空或只有一个元素,如果是则直接返回,然后创建一个`seen`字典,并初始化`current`指向链表的第一个节点。接着在while循环中,如果当前节点的值已经存在于`seen`字典中,我们就跳过下一个节点;否则,我们将该值添加到字典并移动到下一个节点。