leetcode 82. 删除排序链表中的重复元素 II

本文介绍了一种从已排序链表中移除所有重复元素的方法,仅保留不重复的数字。通过遍历链表并使用标志变量,判断每个节点是否重复,未重复的节点将被添加到新的链表中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

  2. 题目描述

    1. 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字
    2. 输入: 1->2->3->3->4->4->5
      输出: 1->2->5
    3. 输入: 1->1->1->2->3
      输出: 2->3
  3. 解题思路

    1. 遍历节点,用flag变量来判断当前节点是否存在重复,如果不重复就加入新链表中。
  4. 代码

    1. python
      
      class Solution:
          def deleteDuplicates(self, head: ListNode) -> ListNode:
              if not head or not head.next:
                  return head
      
              res = ListNode(0)
              tmp = res
              while head:
                  cur, head, flag = head, head.next, 1
                  while head and cur.val == head.val:
                      flag, head = 0, head.next
                  if flag:
                      tmp.next = cur
                      tmp = tmp.next
              tmp.next = None
              return res.next
      

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值