删除链表中重复的结点
时间限制:1秒 空间限制:32768K 热度指数:295384
本题知识点: 链表
算法知识视频讲解
题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
代码:法1.list法
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def deleteDuplication(self, pHead):
# write code here
res = []
while pHead:
res.append(pHead.val)
pHead = pHead.next
res = [i for i in res if res.count(i) == 1]
dummy = ListNode(0)
pre = dummy
for i in res:
node = ListNode(i)
pre.next = node
pre = pre.next
return dummy.next
代码:法2.拼接法
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def deleteDuplication(self, pHead):
# write code here
if not pHead or not pHead.next:
return pHead
pre = ans = ListNode(-1)
pre.next = p = pHead
while p and p.next:
next = p.next
if p.val == next.val:
while next and p.val == next.val:
next = next.next
pre.next = next
p = next
else:
pre = p
p = p.next
return ans.next