题目描述:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
示例 1:
输入: 1->2->3->3->4->4->5
输出: 1->2->5
示例 2:
输入: 1->1->1->2->3
输出: 2->3
思路:重复的元素需要删的一个不剩,所以需要考虑使用2个指针,第一个指针指着最后肯定存在的元素,第二个指针和它后面的元素进行比较,如果相同,那么这俩个节点最后都不存在,那么第一个指针就有用处了。
在判别比较的时候,不能两个节点值相同就删除这两个节点,因为后面可能还有和该值相同的节点,所以当两个值相等时,我们先删第二个节点,但指针所指节点的值和他后面节点的值不相等时,我们就跳出循环,删除这个节点。
temp=ListNode(None)
temp.next=head
result=temp
if head==None:
return None
elif head.next==None:
return head
else:
temp2=temp.next
while temp2.next:
if temp2.val==temp2.next.val:
while temp2.val==temp2.next.val:
temp2.next=temp2.next.next
if temp2.next==None:
break
temp.next=temp2.next
temp2=temp.next
else:
temp=temp2
temp2=temp2.next
if temp2==None:
break
return result.next
emmm,发现刷leetcode会上瘾,真希望明年春招前把leetcode刷完,然后找一个好的实习。
删除重复数字的链表节点
本文介绍了一种算法,用于删除链表中所有重复的数字节点,仅保留唯一数字节点,通过双指针技巧实现,确保链表的正确性和效率。
456

被折叠的 条评论
为什么被折叠?



