题目如下:
![](https://i-blog.csdnimg.cn/blog_migrate/5eb326756a43b6febde0d4a08786da99.png)
整个题目可以建立一个dummy variable用于储存我们新的用于返回的指针,这个variable也是一个node,我们用这个dummy variable来和head当中的value进行比较,如果相同,则dummy variable保持不变,同时head往后移动一个node。如果不相同,说明我们遇到了一个和前一个node value不相同的元素,则dummy variable往后增添一个node,head同时也向后移动一个node。一旦移动完所有的head linked list,我们将dummy variable的下一个元素赋值为none,这样就可以得到一个新的linked list了!
代码如下:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
if head == None:
return None
dummy = ListNode(-101)
tail = dummy
while head:
#这里相当于用前一个链表node当中的数值和后一个head当中的数值进行比较,
#如果不相等,则继续下去,相等则head往后移动一格
if tail.val != head.val:
tail.next = head
tail = tail.next
head = head.next
tail.next = None
return dummy.next