【leetcode】83: 删除排序链表中的重复元素

题目如下:

 

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

 

posted @ 2021-08-23 23:10  Geeksongs  阅读(34)  评论(0编辑  收藏  举报

Coded by Geeksongs on Linux

All rights reserved, no one is allowed to pirate or use the document for other purposes.