题解 | #删除有序链表中重复的元素-I#

删除有序链表中重复的元素-I

http://www.nowcoder.com/practice/c087914fae584da886a0091e877f2c79

利用set()函数去重

set()去重时,会造成顺序发生变化,所以关键点在于,如何让去重之后的数组,按照之前链表的顺序排序
所以想着建立两个数组:一个是去重(顺序发生变化)的数组N,一个是不去重(copy链表)的数组n,按照n.index去对N排序,即可达到去重而且顺序不变的效果。
```# 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
        N=set()
        n=[]
        while head is not None:
            n.append(head.val)
            N.add(head.val)
            head=head.next
        N0=list(N)
        N0.sort(key=n.index)
        
        N1=ListNode(-1)
        temp=N1
        for i in range(len(N0)):
            #print(N0[i])
            temp.next=ListNode(N0[i])
            temp=temp.next
        return N1.next
全部评论

相关推荐

争当牛马还争不上
码农索隆:1.把简历改哈 2.猛投,狠投 3.把基础打牢 这样你在有机会的时候,才能抓住
点赞 评论 收藏
分享
06-05 19:46
已编辑
武汉大学 后端
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务