【leetcode系列】【算法】【中等】删除排序链表中的重复元素 II

题目:

题目链接: https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/

解题思路:

创建一个dummy节点,一个prev临时节点

在遍历时,判断head和head.next节点值是否相同,如果相同,就跳过此值对应的所有节点

如果不相同,将prev.next指向head,继续遍历

代码实现:

# 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:
        dummy = ListNode(0)
        dummy.next = head
        prev = dummy
        while head and head.next:
            flag = True
            while flag and head and head.next:
                flag = False
                while head and head.next and head.val == head.next.val:
                    head = head.next
                    flag = True
                    
                if flag:
                    head = head.next
                    
            prev.next = head
            if not head or not head.next:
                break
                
            head = head.next
            prev = prev.next
            
        return dummy.next
发布了100 篇原创文章 · 获赞 4 · 访问量 1479

猜你喜欢

转载自blog.csdn.net/songyuwen0808/article/details/105282977
今日推荐