题目如下:
整个题目可以建立一个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