剑指Offer_编程题56:删除链表中重复的结点

题目:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

思路:将链表里面所有的数存在一个列表里面,然后把列表里面只出现一次的数提取出来,在新建一个链表放进去。。但是不知道自己做的为什么不对。。。。

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    def deleteDuplication(self, pHead):
        # write code here

        result = []
        while pHead:
            result.append(pHead.val)
            pHead = pHead.next
        
        result_ = []
        for each in result:
            if result.count(each) == 1:
                result_.append(each)

        if len(result_) == 0:
            # return []
            return None

        else:
            ans = ListNode(result_[0])
            tmp = ans 

            for each in result_[1:]:
                ans.next = ListNode(each)
                ans = ans.next

            return tmp

当输入是{1,1,1,1}的时候,一直报'list' object has no attribute 'val'这个错误。。。。

终于知道哪里错了,当为空的时候,返回值不对,应该返回的是空链表,不是空列表,所以写return None,就对了。。。。

但是胖胖说这么写不是面试官想要的答案,直接在原有链表操作。。。。

猜你喜欢

转载自blog.csdn.net/mengmengdajuanjuan/article/details/81142296