python算法:删除排序链表中的重复元素

删除排序链表中的重复元素

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
python算法:删除排序链表中的重复元素_第1张图片
举例:
python算法:删除排序链表中的重复元素_第2张图片
如果q和q的下一个元素的值相同,直接跳过此元素,即: q.next=q.next.next
python算法:删除排序链表中的重复元素_第3张图片
这时链表变成了:
python算法:删除排序链表中的重复元素_第4张图片
这时再进行一次遍历,如果q的值与q的下一个元素的值不一致,那么q向后一位移动,q.next会自动向后一位移动:
q = q.next
python算法:删除排序链表中的重复元素_第5张图片
代码如下:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def deleteDuplicates(self, head: ListNode) -> ListNode:
        q = head
        while q and q.next:
            if q.val == q.next.val:
                q.next = q.next.next
            else:
                q = q.next
        return head

题库来源:https://leetcode-cn.com

你可能感兴趣的:(python,链表,数据结构,python,java,算法)