博客
关于我
python去掉重复的数字_leetcode删除列表的重复元素python解法
阅读量:398 次
发布时间:2019-03-05

本文共 1155 字,大约阅读时间需要 3 分钟。

要解决删除排序链表中重复节点的问题,可以使用双指针法,记录已访问过的节点,删除重复节点。以下是详细的解决方案:

解决方案思路

  • 创建虚拟头节点:为了处理链表头节点的重复情况,创建一个虚拟头节点dummy_head,使其下一个指向原链表的头节点。
  • 初始化指针:使用两个指针precur,分别指向虚拟头节点和链表头节点。
  • 遍历链表:使用循环遍历链表,检查当前节点的下一个节点是否存在且值相同。如果存在重复,移动cur指针到最后一个重复节点,删除重复节点。
  • 更新指针:在处理重复节点后,更新precur指针,继续遍历剩下的节点。
  • 解决代码

    class ListNode:    def __init__(self, x):        self.val = x        self.next = Noneclass Solution:    def deleteDuplicates(self, head: ListNode) -> ListNode:        dummy_head = ListNode(0)        dummy_head.next = head        pre = dummy_head        cur = head        while cur:            if cur.next and cur.val == cur.next.val:                while cur.next and cur.val == cur.next.val:                    cur = cur.next                pre.next = cur.next                pre = pre.next                cur = cur.next            else:                pre = pre.next                cur = cur.next        return dummy_head.next

    代码解释

  • 创建虚拟头节点dummy_head用于处理原始链表头节点的重复,确保删除操作正确无误。
  • 初始化指针pre指向虚拟头节点,cur指向链表头节点。
  • 遍历链表:在循环中,检查当前节点的下一个节点是否存在且值相同。如果存在重复,移动cur指针到最后一个重复节点,然后删除重复节点。
  • 更新指针:在处理重复节点后,更新precur指针,继续处理下一个节点。
  • 返回结果:返回虚拟头节点的下一个节点,即为处理后的链表头节点。
  • 通过这种方法,可以高效地删除链表中的重复节点,时间复杂度为O(n),空间复杂度为O(1)。

    转载地址:http://sdjg.baihongyu.com/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | 实战 | 通过微调SegFormer改进车道检测效果(数据集 + 源码)
    查看>>
    OpenCV与AI深度学习 | 实战—使用YOLOv8图像分割实现路面坑洞检测(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战篇——基于YOLOv8和OpenCV实现车速检测(详细步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战|OpenCV实时弯道检测(详细步骤+源码)
    查看>>
    OpenCV与AI深度学习 | 实用技巧 | 使用OpenCV进行模糊检测
    查看>>
    OpenCV与AI深度学习 | 实践教程|旋转目标检测模型-TensorRT 部署(C++)
    查看>>
    OpenCV与AI深度学习 | 工业缺陷检测中数据标注需要注意的几个事项
    查看>>
    OpenCV与AI深度学习 | 干货 | 深度学习模型训练和部署的基本步骤
    查看>>
    OpenCV与AI深度学习 | 手把手教你用Python和OpenCV搭建一个半自动标注工具(详细步骤 + 源码)
    查看>>
    OpenCV与AI深度学习 | 水下检测+扩散模型:或成明年CVPR最大惊喜!
    查看>>
    OpenCV与AI深度学习 | 深度学习检测小目标常用方法
    查看>>
    OpenCV与AI深度学习 | 超越YOLOv10/11、RT-DETRv2/3!中科大D-FINE重新定义边界框回归任务
    查看>>
    OpenCV与AI深度学习 | 高效开源的OCR工具:Surya-OCR介绍与使用
    查看>>
    OpenCV与AI深度学习|16个含源码和数据集的计算机视觉实战项目(建议收藏!)
    查看>>
    Opencv中KNN背景分割器
    查看>>
    OpenCV中基于已知相机方向的透视变形
    查看>>
    OpenCV中的监督学习
    查看>>
    opencv中读写视频
    查看>>
    OpenCV中遇到Microsoft C++ 异常 cv::Exception
    查看>>
    opencv之cv2.findContours和drawContours(python)
    查看>>