032-力扣刷题-83--删除排序链表中的重复元素

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 image.png

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def deleteDuplicates(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        cur = head  #设立一个指针指向头结点
        while cur!=None:
            # print(cur.val)
            runner = cur.next  #让runner记录的是cur的下一个节点
            while runner and cur.val == runner.val:  #,因为runner指向的是cur的下一个节点,所以首先到达空,要判断一下并且如果当前值跟下一个节点的值相等话就删除下一个节点,并继续循环
                #删除操作
                cur.next = runner.next  #当前节点指向下一个节点的下一个节点
                runner=cur.next  #runner也指向下一个节点.runner一开始指向的节点就被删除了
            cur = cur.next  #当删除了相同的元素,就让cur指针往下走一个几点
        return head  #最后返回头结点就好了