83. 删除排序链表中的重复元素

给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution(object):
def deleteDuplicates(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
#未出现的节点存入res,result用于记录头节点
res = ListNode()
result = res
#遍历链表中所有元素,并存入集合,如果集合长度未变则出现过,反之则未出现过
item = set()
while head:
lens = len(item)
item.add(head.val)
new_lens = len(item)
if lens != new_lens:
res.next = ListNode(head.val)
res = res.next
head = head.next
return result.next