题目
描述
删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次
例如:
给出的链表为1→1→2,返回1→2.
给出的链表为1→1→2→3→3,返回1→2→3.
数据范围:链表长度满足 0≤n≤100,链表中任意节点的值满足 ∣val∣≤100
进阶:空间复杂度 O(1),时间复杂度 O(n)
思路
将节点值保存下来,然后去重,再排序。
代码
python版本:
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param head ListNode类
# @return ListNode类
#
class Solution:
def deleteDuplicates(self , head: ListNode) -> ListNode:
# write code here
if(head==None):
return head
storage = []
while(head):
storage.append(head.val)
head = head.next
dummy = ListNode(-1)
sg = dummy
storage = list(set(storage))
storage.sort()
for v in storage:
node = ListNode(v)
dummy.next = node
dummy = dummy.next
return sg.next
c++版本:
无